![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
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. |
|
|
![]()
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?
|
|
|
![]()
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. :] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
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ł ? |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
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 |
|
|
![]()
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ść. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
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. |
|
|
![]()
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 |
|
|
![]()
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ą. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 01:29 |