Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa obsługi MYSQL 5
gam3r
post 18.02.2006, 15:34:17
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)biggrin.gif
Pliki:
klasa
Plik konfiguracyjny

Ten post edytował gam3r 18.02.2006, 15:42:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
sf
post 18.02.2006, 16:03: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.
Go to the top of the page
+Quote Post
gam3r
post 18.02.2006, 21:57:28
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().....
Go to the top of the page
+Quote Post
sf
post 18.02.2006, 22:35:14
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 winksmiley.jpg Kod jest piękniejszy, a co za tym idzie czytelniejszy bez zbędnych pierdół.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
gam3r
post 18.02.2006, 23:12:30
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 ohmy.gif tongue.gif). Chyba rzeczywiście metody insert/select/update/delete są zbędne, wiec chyba je usunę... ale jeżeli chodzi o książke to nie są one jak przykazania, natomiast "PHP5.ZP" stworzyli doświadczeni programiści wiec chyba wiedzą co piszą i co jest dobre a co nie.
Go to the top of the page
+Quote Post
NuLL
post 18.02.2006, 23:35:22
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 questionmark.gif

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 :)
Go to the top of the page
+Quote Post
gam3r
post 19.02.2006, 00:09:50
Post #7





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 8.06.2005

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


  1. <?php
  2. $zbior1 = $db -> doQuery("SELECT * FROM news");
  3. $zbior2 = $db -> doQuery("SELECT * FROM articles");
  4.  
  5. foreach( $zbior1 as $row1)
  6. {
  7. //kod
  8. }
  9.  
  10. foreach( $zbior2 as $row2)
  11. {
  12. //kod
  13. }
  14. ?>

co za problem? albo o cos innego chodzi? blink.gif
Go to the top of the page
+Quote Post
NuLL
post 19.02.2006, 00:40:37
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 questionmark.gif Albo tablicy questionmark.gif Albo obiektu wynikowego questionmark.gif

Nie kazdy wymaga parsowania resultu mysqla do tablicy. Co wtedy questionmark.gif

Pozatym jak wyglada obluga bledow questionmark.gif Mam zalozmy blad w skladni zapytania. JAk sie moge dostac do ostatniego bledu questionmark.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
gam3r
post 19.02.2006, 09:06:12
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 biggrin.gif no mamy wysjątki, można dopisać przy wyrzucaniu wyjątków coś takiego
  1. <?php
  2. if ( $blad ) 
  3. {
  4. throw GreenException("błąd wykonania zapytania do bazy: $this -> database" . $query );
  5. }
  6. ?>

no i wtedy widzisz jakie zapytanie jest złe:/
dobra widze ze jeszcze sporo do porawienia w klasie .... macie racje, kijowa jest... sad.gif
Go to the top of the page
+Quote Post
sf
post 19.02.2006, 15:21:11
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 winksmiley.jpg Pare poprawek i bedzie w miare przyzwoita.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
gam3r
post 19.02.2006, 18:02:36
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
Go to the top of the page
+Quote Post
NuLL
post 19.02.2006, 19:56:04
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 :)
Go to the top of the page
+Quote Post
gam3r
post 7.03.2006, 20:33:43
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
Go to the top of the page
+Quote Post
Rafiki
post 12.03.2006, 11:39:40
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 :|
Go to the top of the page
+Quote Post
gam3r
post 17.03.2006, 19:58:38
Post #15





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 8.06.2005

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


sorki, juz plik jest na servie
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.07.2025 - 14:44