![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
ostatnio czytałem ksiazke PHP5.zaawansowane programowanie, tam autorzy stworzyli prostą klase do obsługi DB, ostatnio tez zobaczyłem gotową klasę Flipaja i to zachęciło mnie do stworzenie czegoś takiego własnymi palcami;). Proszę o sugestie co zmienić, żeby np. poprawić wydajność, co jest dobre, co złe, oraz ew. jak dany probelm rozwiązać. Dosyć sporo jest komentarzy w pliku więc nie bede tutaj opisywac sposobu działania klasy. Aktualnie bede rozpoczynac prace nad wdrożeniem cache'owania wiec za jakiś moze tydzien posle jeszce poprawioną wersję (jezeli ta sie spodoba) ![]() Pliki: klasa Plik konfiguracyjny Ten post edytował gam3r 18.02.2006, 15:42:03 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Sporo się napracowałeś z tego co widze... tylko czy to praca nie na marne? Skoro jest PDO...
Pozatym te osobne funckje poza klasą to złe rozwiązanie. Ładowanie w ten sposób konfiguracji też mi nie przypadł - co jeżeli chciałbym utworzyć dwa obiekty, które łączą sie z dwoma różnymi bazami? Pozatym takie rozwiązania jak "1=1" są niepotrzebne. Dajesz parametr jako array, ale wartość domyślna to string... W ogóle takie metody jak insert, delete... to wszystko się nadaje jako osobna klasa i na tym bym Ci się radził skupić. ActiveRecord ostatnio jest w modzie. Ten post edytował sf 18.02.2006, 16:08:51 -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
@sf:
-PDO : nie wiem czy na marne czy nie na marne, ale z tego co mi wiadomo to PDO nie wyszło jeszcze w wersji finalnej i pewnie bedą w nim wprowadzone jakieś zmiany, wiec korzystanie z niego nie jest dobrym pomysłem - coś co działa teraz w PDO, nie koniecznie musi działać tak samo później. -osobne funkcje poza klasą są właściwie nie potrzebne tam, ponieważ najpierw chciałem zrobić aby w metodach update/select/insert/delete "prześwietlac" te wprowadzane dane, celem by wprowadzic te dodatkowe ukośniki, ale właściwie to niepotrzebne bo: w większości firm hostingowych "magiczne ukośniki" są włączone, a poza tym czytałem gdziieś że w php6 opcja ta ma być już stała -właśnie o to chodzi we wzorcu SINGLETON aby tworzyc tylko jedno połączenie, mi nie bedzie potrzebne korzystanie z kilku baz, ale jezeli komus tak, to mozna raczej lekko przerobic te klase i bedzie ok -wiem ze mozna byc ten warunek where opuścić ale chyba to nic nie zmienia wydajności, bo np. w książce "bazy danych i mysql. od podstaw" autorzy w niektorych przypadkach proponowali takie rozwiązanie tworzenia zapytań, wiec wg. mnie to nic nie zmienia sprawy -a metody insert/update/select/delete to w sumie są zbędne i to taki mały bajer, ale bez trudu można korzystać tylko z doQuery() czy getAll(), getRow()..... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Można utworzyć singleton, który będzie korzystał z kilku połączeń. Robisz tablice instancji gdzie kluczem jest DSN.
PDO wyszło w stabilnej wersji 26 listopada 2005 roku. Książka to nie są przykazania ![]() -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
jesli chodzi o singletona z wieloma połączeniami to rozumiem że i tak można (ale czy to wtedy bedzie juz SINGLETON - gdy utworzymy kilka połączeń?), ale mi to nie jest potrzebne, wiec tego nie robilem, a jezeli ktos chce to nie jest to w sumie wielki problem troche przerobic klase. PDO jest b.dobre ale ja na serwie gdzie mam hosting (forall.pl) to nie mam pdo włączonego dla mysql tylko dla sqlite, wiec to mi tez nie jest potrzebne. Poza tym lepiej użyć takiej nakładki jezeli np. te klase bedziesz wykorzystywac w kilku innych klasach - to przy zmianie platformy BD, albo sposobu połączenia z BD (mysql/mysqli/pdo) łatwiej bedzie wprowadzic te zmiany w innych klasach (w sposobie wykonywania połączeń z BD) - wystarczy zmienić definicje klasy DB_connect i kod w pozostałych klasach nie musi być naruszony (chociaż w sumie to to samo co PDO
![]() ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
No dobra - co jesli chce operowac na dwoch zbiorach wynikow jednoczesnie
![]() Ten post edytował NuLL 19.02.2006, 06:42:49 -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
A co jesli ja chce miec wynik w postaci Iteratora
![]() ![]() ![]() Nie kazdy wymaga parsowania resultu mysqla do tablicy. Co wtedy ![]() Pozatym jak wyglada obluga bledow ![]() ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
no racja, w sumie myslalem o tym zeby zwracac wyniki w różnych postaciach, ale chyba wszystko i tak sie sprowadza mniej wiecej do tego samego... faktycznie, przy kolejnych poprawkach wezme to na uwage
![]()
no i wtedy widzisz jakie zapytanie jest złe:/ dobra widze ze jeszcze sporo do porawienia w klasie .... macie racje, kijowa jest... ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
W porownaniu z tymi, ktore sa na PHPClasses to jest niezla
![]() -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
no to jak poprawie tą klase to podeśle za jakiś czas lepszą wersje
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Ale ja bym chcial wiedziec jaki komentarz bledy wywala MySQL - to tak na boku.
-------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
witam,
niedawno dałem wam do oceny klasę DB_connect, popłynęło tam sporo słów krytyki... sad.gif i postanowiłem tę klasę ulepszyć (tutaj źródło) dodałem "obsługę cache'u" ( taką jak w arcie na webcity.pl ), usunąłem kilka metod, dodałem jakieś nowe. Oraz trochę zwiększyła się liczba form zwracanych wynikow tongue.gif proszę o ocenę sugestie... Obsługa wyjątków za pomocą klasy iDBconnectExceptions...nie chciało mi się "dokumentować kodu", zrobię to w przyszłości, w jakiejś jeszcze ulepszonej wersji klasy... trochę testowałem klasę, raczej wszystko chodzi dobrze - nie wiem jeszcze jak klasa działa z transakcjami przy aktywowanym cache'u, ale myślę że wszystko powinno hulać ...czekam worriedsmiley.gif |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 90 Pomógł: 0 Dołączył: 29.12.2005 Skąd: Z krzaków Ostrzeżenie: (0%) ![]() ![]() |
jak wrzucasz skrypty to postaraj sie zapewnic jakies slate hostowanie plikow a nie error 404 :|
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
sorki, juz plik jest na servie
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 14:44 |