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%)
-----


Głownie są te błędy wynikające z użycia singletonu samego w sobie:
1. Tworzenie twardych, ukrytych zależności pomiędzy obiektami. To niesie za sobą cały szereg konsekwencji, na czele z utratą korzyści płynących ze stosowania IoC czy interface-driven design.
2. Globalny dostęp do obiektu. Singleton to nic innego jak global w otoczce OOP, a jak złą praktyką jest stosowanie zmiennych globalnych nie trzeba chyba nikomu mówić.

Singleton służy wymuszeniu istnienia co najwyżej jednej instancji danego obiektu, a nie dostępowi do niego zewsząd. Innymi słowy chodzi o uniemożliwienie utworzenia następującej konstrukcji:
  1. $a = new MyObject();
  2. $b = new MyObject();
Sytuacje, gdzie istnienie dwóch obiektów tego samego typu nie miałoby najmniejszego sensu czy wręcz mogłoby prowadzić do błędów i/lub zagrożeń są bardzo rzadkie w środowisku PHP. Ja sam nie pamiętam kiedy musiałem skorzystać z Singletonu w swoim kodzie (czy to w PHP czy Javie) - nie jestem nawet pewien czy kiedykolwiek musiałem.

EDIT:
@vincent vega: Odchodzisz od tematu. Autor pyta konkretnie o przekazywanie surowego połączenia z bazą danych (PDO), nie fabryk czy rejestrów.

Co do tego - jak to prawidłowo zrobić - szału to tutaj nie będzie, ale nie wiem czego się spodziewasz:
  1. class Domains {
  2. /* @var PDO */
  3. private $dbConn;
  4.  
  5. public function __construct(PDO $dbConn) {
  6. $this->dbConn = $dbConn;
  7. }
  8. }


Ten post edytował Crozin 19.08.2013, 09:39:56
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: 4.10.2025 - 10:28