Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wzorzec registry - pytanie
Forum PHP.pl > Forum > PHP > Object-oriented programming
slashynsky
Mam pytanie do bardziej obeznanych w temacie.
Czy takie implementowanie wzorca registry jest poprawne, czy jest lepszy sposob?

Mam polaczenie z baza pdo, obiekt ten przekazuje do takiej klasy registry:

  1. abstract class Registry
  2. {
  3.  
  4. private static $_tools = array();
  5.  
  6. public static function set($name, $value) {
  7. self::$_tools[$name] = $value;
  8. }
  9.  
  10. public static function get($name) {
  11. return (isset(self::$_tools[$name]) ? self::$_tools[$name] : null);
  12. }
  13.  
  14. }


w taki sposób:
  1. $db = new PDO('...');
  2. Registry::set('db',$db);


Teraz aby skorzystac z tego obiektu w innej klasie w konstruktorze mam cos takiego:

  1. function __construct()
  2. {
  3. $this->db = Registry::get('db');
  4. }


Czy jest to sposób dobry?
mrc
Zamiast zwracać null kiedy obiekt nie istnieje, wyrzucałbym wyjątek. Ładniej wygląda jak rzucony zostanie wyjątek zamiast nullpointera. Zakładam oczywiście że wszystkie elementy które pobierasz z rejestru są obligatoryjnie używane w projekcie.
pyro
Nie jest dobry, bo:
1.) Deklarujesz abstrakcyjną klasę, która taką być nie powinna.
2.) Uniezależniasz konstruktor swojej klasy od klasy Registry (zapoznaj się z Dependency Injection)
3.) W projekcie można to zrobić bez samych odwołań statycznych.
slashynsky
Cytat(pyro @ 12.02.2014, 13:30:05 ) *
Nie jest dobry, bo:
1.) Deklarujesz abstrakcyjną klasę, która taką być nie powinna.
2.) Uniezależniasz konstruktor swojej klasy od klasy Registry (zapoznaj się z Dependency Injection)
3.) W projekcie można to zrobić bez samych odwołań statycznych.


1) Abstrakcyjna faktycznie nie powinna byc, ale..
2) Jak to inaczej obejsc? W metodach odwolujac sie do Registry i tak uzalezniam klase od klasy registry...
3) Podaj przyklad, tak jak pisalem zaczynam swoja przygode w tym i dobrze jest uczyc sie dobrych metod smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.