Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> pisanie klasy do obslugi mysqli, ma sens?
bl4ck_b0x
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 21.11.2006

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


Witam.

Jakiś czas temu postanowiłem posiedzieć trochę nad obiektowym PHP. Standardowe pisanie laików w OOP zaczyna się od napisania klasy do obsługi bazy danych. Wyczytałem, że wykorzystywanie mysqli jest wydajniejsze od mysql. Sama w sobie mysqli jest klasą którą można wykorzystać więc jest jakiś sens "wynajdowania koła na nowo"? Jeśli będę korzystał z tej wbudowanej już klasy w PHP, to pisząc jakieś inne klasy np. rejestrację w jaki sposób rozwiązać "problem" połączenia? Tzn. w klasie np. register.class.php umieścić kod mysqli('host','user','password','db_name'); ? Czy może w jakiś inny sposób? Z racji, że raczkuję w obiektowym PHP proszę o w miarę jasne wytłumaczenie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, przykład pierwszy - uniezależnienie się od stosowanej biblioteki obsługi bazy - mając własną klasę będziesz mógł - bez modyfikowania zapytań - swobodnie wymieniać back-endy do baz, np. korzystasz ze SQLite, a zechcesz przejść na MySQL, czy też zmienić sposób łączenia z bazą z natywnego na np. ODBC. W przypadku prostych zapytań (inne back-endy) skończy się na wymianie klasy. ;]

Pewnym rozwiązaniem jest PDO, ale jak benchmarki dowodzą, potrafi on zmniejszać wydajność o prawie połowę (kosztem udostępnienia obiektowego interfejsu).

Cytat
Jeśli będę korzystał z tej wbudowanej już klasy w PHP, to pisząc jakieś inne klasy np. rejestrację w jaki sposób rozwiązać "problem" połączenia? Tzn. w klasie np. register.class.php umieścić kod mysqli('host','user','password','db_name'); ?

Osobiście korzystam z wywoływania metody zestawiania połączenia w pliku konfiguracyjnym bazy.
Go to the top of the page
+Quote Post
bl4ck_b0x
post
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 21.11.2006

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


Masz na myśli, że w pliku config.php gdzie możesz sobie ustawić zmienne etc. po prostu wykonujesz np. $db = new db_class('host','user','pass','db_name'); i wszędzie tam gdzie zaincludeujesz plik (a domyślnie pewnie robisz to w indexie aby mieć config.php wszędzie) masz połączenie z bazą w całym skrypcie tak?
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




W tym konkretnym przypadku mam po prostu wczytywaną konfigurację w konstruktorze sterownika - wywołuje po prostu odpowiednią metodę służącą do inicjalizacji danych połączenia. :] Zaś baza jest "wołana" dopiero wtedy, gdy zachodzi potrzeba pobrania z niej jakichś danych.

Cytat
a domyślnie pewnie robisz to w indexie aby mieć config.php wszędzie) masz połączenie z bazą w całym skrypcie tak?

W indexie, to mam łapanie wyjątka wysypującego cały skrypt i tylko jedną metodę. ;p (vide: MVC)

Cytat
masz połączenie z bazą w całym skrypcie tak?

Nie, tylko w razie potrzeby. :]
Go to the top of the page
+Quote Post
zzeus
post
Post #5





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


Cytat(erix @ 19.08.2009, 16:58:56 ) *
Pewnym rozwiązaniem jest PDO, ale jak benchmarki dowodzą, potrafi on zmniejszać wydajność o prawie połowę (kosztem udostępnienia obiektowego interfejsu).


Mógłbyś podać jakiś link do benchmarku w którym to widać ? Bo jakiś czas temu szukałem odpowiedniego interfejsu i postawiłem na PDO, czyżbym się pomylił ?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://dealnews.com/developers/php-mysql.html
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #7





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Wiesz ~erix.. zawsze możemy wrócić do Assemblera (IMG:style_emoticons/default/smile.gif)
Nie widzę sensu pisania własnego sterownika (poza oczywistym, czyli rozwojem umiejętności), bo PDO wystarcza. Na PDO nakłada się jeszcze dowolnie wybrany ORM i dopiero można jako tako pracować (IMG:style_emoticons/default/guitar.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




~Cysiaczek, widzę że jesteś kolejnym reprezentantem obozu jak będzie wolno chodzić, to się serwer dokupi.

Nie zawsze to ma sens/możliwości.

Cytat
Nie widzę sensu pisania własnego sterownika (poza oczywistym, czyli rozwojem umiejętności)

Jest, właśnie ze względu na wydajność.
Go to the top of the page
+Quote Post
cojack
post
Post #9





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat
pisanie klasy do obslugi mysqli, ma sens?

nie, doctrine wystarcza w 100% i jest szybsze niż cokolwiek Ty byś napisał. a na pewno bezpieczniejsze.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@erix - raczej mam po prostu zdrowe podejście. Jak często piszesz aplikacje, w której zaoszczędzone 0.0001 sekundy da wymierny efekt dla szybkości działania serwisu? IMO, to tak wychodzi forum.php.pl x 5.
Przy takich wartościach dopiero (ot z grubsza) możesz oszczędzić kasę kupując czas programisty zamiast nowego serwera (IMG:style_emoticons/default/smile.gif)

Podzrawiam
Go to the top of the page
+Quote Post
Pr0100
post
Post #11





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


Cytat
nie, doctrine wystarcza w 100% i jest szybsze niż cokolwiek Ty byś napisał. a na pewno bezpieczniejsze.


lubię Doctrine, ale demonem szybkości to ono akurat nie jest (IMG:style_emoticons/default/smile.gif)

Cytat
jak będzie wolno chodzić, to się serwer dokupi


a co jest złego w takim podejściu? W dzisiejszych czasach nie opłaca się być perfekcjonistą.
Go to the top of the page
+Quote Post

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: 27.09.2025 - 01:29