Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> pytanie o PDO i simpletony
dżozef
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 9
Dołączył: 25.05.2013

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


Ogarnąłem już PDO i używam statycznej zmiennej do połączenia się z bazą. Tutaj przykładowa klasa: https://gist.github.com/mprz/6cce0e6dd51e4796209c
Tworząc kilka klas niejako uzależniam je od klasy odpowiedzialnej za tworzenie połączenia. Czy to na pewno idealne rozwiązanie?
Druga sprawa: gdzie inkludować ową klasę DB? W każdej z klas która jej używa, czy w programie, który korzysta z obu klas (tak robię obecnie)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Zacznijmy od tego, że w tym wątku rozmawiamy o Singletonie w sensie wzorca projektowego, nie zasięgu typu singleton (czy jakkolwiek to nazwać) znanego ze wszelkich DIC-ów czy przytoczonego przez Ciebie kodu. W tych dwóch kontekstach "singleton" oznacza coś zupełnie innego.

Przykład demonstrujący "zasięg typu singleton":
  1. class Abc {
  2. private $config;
  3.  
  4. // zasięg typu singleton (singleton scope)
  5. public function getConfigA() {
  6. if ($this->config === null) {
  7. $this->config = new Config(...);
  8. }
  9.  
  10. return $this->config;
  11. }
  12.  
  13. // tzw. prototype scope - każde wywołanie to nowy obiekt
  14. public function getConfigB() {
  15. return new Config(...);
  16. }
  17. }
Jak widać klasa Config nie jest singletonem sama w sobie.

Co do kodu, który podałeś:
1. W metodzie getConfig() tworzysz obiekt-usługę o zasięgu typu "singleton", jednak sam obiekt singletonem nie jest. Takie rozwiązanie jest jak najbardziej poprawne.
2. Zarówno obiekt konfiguracji jak i połączenia z bazą danych powinien zostać utworzony poza obiektem DomainsController i do niego wstrzyknięty. Podstawa pisania poprawnego kodu: IoC. Unikniesz w ten sposób dziwnych problemów typu // Konfiguracja polaczenia, w kazdym z kontrolerow osobno ?.
3. Obiekt typu Domains posiada zwykłą zależność, która powinna być wstrzyknięta. Możesz zrobić to tak jak pokazałeś, tj. ręcznie, możesz też użyć do tego jakiegoś DIC-a.

Ten post edytował Crozin 19.08.2013, 12:08:34
Go to the top of the page
+Quote Post

Posty w temacie
- dżozef   pytanie o PDO i simpletony   12.06.2013, 19:31:16
- - vincent vega   Nie wiem czy idealne ale takie rozwiązanie jest po...   17.08.2013, 12:09:14
- - Crozin   @vincent vega: Jak najbardziej można korzystać w j...   17.08.2013, 12:25:39
- - vincent vega   @crozin Nie napisałem że nie możesz mieć kilku poł...   18.08.2013, 18:42:28
- - Crozin   CytatNapisałem że nie potrzebujesz tworzyć kilku p...   18.08.2013, 19:43:10
- - vincent vega   CytatZazwyczaj... a gdy w końcu przychodzi koniecz...   18.08.2013, 23:04:58
- - Crozin   CytatPróbujesz rozwiązać problem który jeszcze nie...   19.08.2013, 00:20:49
- - Szymciosek   Crozin możesz coś więcej powiedzieć o błędach powt...   19.08.2013, 07:16:28
- - vincent vega   Nie ma idealnych rozwiązań. Napisałem że takie roz...   19.08.2013, 08:55:47
- - Crozin   Głownie są te błędy wynikające z użycia singletonu...   19.08.2013, 09:23:15
- - vincent vega   No spodziewałem się całej otoczki OOP Chodzi mi o...   19.08.2013, 10:24:59
- - Crozin   Zacznijmy od tego, że w tym wątku rozmawiamy o Sin...   19.08.2013, 12:08:08
- - vincent vega   No właśnie chciałem zobaczyć całą infrastrukturę z...   19.08.2013, 13:52:14
- - Crozin   Przykładowa implementacja dosyć rozbudowanego kont...   19.08.2013, 14:30:35
- - vincent vega   Dla mnie to astronautyka, uważam że jeżeli można u...   21.08.2013, 10:27:30
- - destroyerr   Można korzystać z podanych funkcji tylko powstaje ...   21.08.2013, 11:02:17
- - vincent vega   Może faktycznie trochę się zapędziłem z DDD, sam j...   21.08.2013, 12:14:03
- - Crozin   CytatW tej chwili forsowany jest DIC jak by miał t...   21.08.2013, 12:53:47
- - vincent vega   Tak stricte to nie są te same rzeczy, czasami tylk...   21.08.2013, 13:39:40


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: 7.10.2025 - 02:21