Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa obiektu vs. klasa kolekcji obiektow
little-did-he-kn...
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 17.03.2008

Ostrzeżenie: (0%)
-----


Czesc.

Mam dylemat zwiazany z budowa klasy obiektow i jej klasy kolekcji.
Zalozmy, ze obiektami sa goscie (Guests)

Obecnie robie to tak:

1. Klasa pojedynczego obiektu
  1. <?php
  2. class Guest {
  3.  
  4. private $id;
  5. private $name;
  6. private $email;
  7. private $password;
  8. private $errors = array();
  9.  
  10. function __construct($id) {
  11. global $dbm;
  12.  
  13. if (is_array($id)) {
  14. $this->id=( !empty($id['ProfileId']) ? $id['ProfileId'] : 0 );
  15. $this->name=( !empty($id['Name']) ? $id['Name'] : $id['Email']);
  16. $this->email=$id['Email'];
  17. $this->password=md5($this->email.microtime());
  18. }  
  19. }
  20.  
  21. function validate() {
  22.  
  23. if ( !preg_match('/b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b/',strtoupper($this->email)) ) {
  24. $this->errors[] = "nieprawidlowy adres e-mail!";
  25. } 
  26.  
  27. return count($this->errors) == 0;
  28. }
  29.  
  30. function __toString() {
  31.  //..
  32. }
  33.  
  34. function getErrors() {
  35. return $this->errors;
  36. }
  37.  
  38.  
  39. function setId($id) {
  40. $this->id = $id;
  41. }
  42.  
  43. function getEmail() {
  44. return $this->email;
  45. }
  46.  
  47. function getPassword() {
  48. return $this->password;
  49. }
  50. }
  51. ?>


2. Klasa kolekcji obiektow:

  1. <?php
  2. class GuestList {
  3. private $aList = array();
  4.  
  5. function add(Guest $g) {
  6.  //...
  7. }
  8.  
  9. function delete(Guest $g) {
  10.  //...
  11. }
  12.  
  13. function getOne() {
  14.  
  15. }
  16.  
  17. function getById($id) {
  18.  
  19. }
  20.  
  21. function getAll() {
  22.  
  23. }
  24.  
  25.  
  26. }
  27. ?>



Teraz pytania:

1. Metoda walidujaca powinna byc w klasie Goscia czy klasie kolekcji Gosci czy nie ma to znaczenia?
2. Dodanie nowego goscia powinno zostac poprzedzone utworzeniem obiektu klasy kolekcji czy tez tak jak ponizej wywolane bez kreacji obiektu?
3. Przekazanie obiektu przez referencje "&" jest zawsze prawidlowym rozwiazaniem?

  1. <?php
  2. $aGuest = new Guest($arr);
  3.  
  4. if ( $aGuest->validate() ) {
  5. GuestList::add(&$aGuest);
  6. echo $aGuest ;
  7.  
  8. }
  9. ?>

4. Kasujac obiekt powinienem tworzyc instancje obiektu kolekcji i samego obiektu goscia jak ponizej, czy tez wywolac ja bezposrednio?:

  1. <?php
  2. $aGuestList = new GuestList();
  3. $aGuest = $aGuestList -> getOne($pId);
  4. $aGuestList->delete(&$aGuest);
  5. ?>


Z gory dziekuje za merytoryczne odpowiedzi!
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:53