Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie z bazą danych, Udostępnienie objektu czy wywołanie w klasie?
Tomplus
post 3.03.2016, 13:11:56
Post #1





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Mam pytanie bo mnie nurtuje ostatnio, a nigdzie nie spotkałem jakiejś rzetelnej odpowiedzi, a chodzi mianowicie o korzystanie z połączenia z bazami danych w klasach i nie wiem które rozwiązanie jest lepsze. Poniżej przedstawiłem przykład.

I pytanie który z tych zapisów jest lepszy z perspektywy działania kodu, czy klasaA gdzie wykonuje się połączenie raz a potem udostępnia się obiekt do klas które wymagają takowego połączenia. [używam ten wzorzec]

Czy lepiej wywoływać połączenie za każdym razem gdy wywołujemy daną klasę która wymaga połączenia z bazą?

  1. class db {}
  2.  
  3. class klasaA {
  4. private $db;
  5. public function __construct($db){
  6. $this->db = $db;
  7. }
  8. }
  9.  
  10. class klasaB {
  11. private $db;
  12. public function __construct(){
  13. $this->db = new db;
  14. }
  15. }


Ten post edytował Tomplus 3.03.2016, 13:32:43
Go to the top of the page
+Quote Post
viking
post 3.03.2016, 13:17:57
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Połączenie z BD jest zazwyczaj kosztowną operacją. Tworzenie nowego dla każdej klasy nie ma żadnego logicznego sensu. Przykład A to często używany DI.


--------------------
Go to the top of the page
+Quote Post
Damonsson
post 3.03.2016, 13:23:08
Post #3





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Jeżeli potrzebujesz innego obiektu to dołączasz go przez DI, czyli wersja A. Ważny, powód to uniwersalność takiego rozwiązania. Nie musisz hardocodować konkretnego obiektu w kodzie. Z perspektywy działania kodu, są identyczne, tu i tu musisz utworzyć obiekt. Patrząc jednak na wzorce projektowe czy przejrzystość kodu, stosowana powszechnie jest wersja A.
Go to the top of the page
+Quote Post
Rysh
post 3.03.2016, 15:27:04
Post #4





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

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


http://phpedia.pl/wiki/Singleton dla wersji PHP5, można zrobić to samo do połączenia z bazą danych, będziesz miał pewność że utworzone zostało tylko jedno połączenie z bazą danych.


--------------------
Go to the top of the page
+Quote Post
Damonsson
post 3.03.2016, 16:08:18
Post #5





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Nie wypowiem się osobiście, żeby nie rozpętać burzy, ale pamiętaj, że niektórzy uważają Singleton za antywzorzec. Ale to już sam musisz rozważyć wszelkie za i przeciw, których mnóstwo w sieci.
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: 19.04.2024 - 06:58