Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wzorzec registry - pytanie
slashynsky
post 7.02.2014, 20:36:59
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 7
Dołączył: 7.02.2014
Skąd: Łódź

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
mrc
post 12.02.2014, 12:29:23
Post #2





Grupa: Zarejestrowani
Postów: 160
Pomógł: 27
Dołączył: 22.09.2008
Skąd: Tarnów

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


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.


--------------------
Go to the top of the page
+Quote Post
pyro
post 12.02.2014, 13:30:05
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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.


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
slashynsky
post 13.02.2014, 00:06:30
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 7
Dołączył: 7.02.2014
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 22:24