Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Dlaczego PHP5?

PDO

Pisanie aplikacji, która musi współpracować z różnymi typami baz danych, może być frustrującym zadaniem, jeśli korzystamy tylko ze standardowych bibliotek PHP. Nazwy funkcji wykonujących operacje na różnych DB nazywają się inaczej (np. pg_connect i mysql_connect), a zestaw dostępnych funkcji może być różny w zależności od używanego systemu DB. Powoduje to, że migracja aplikacji napisanej tylko pod jeden typ DB, z wykorzystaniem standardowych funkcji PHP, może być prawdziwym koszmarem. Do pewnego stopnia problem ten rozwiązują biblioteki stanowiące dodatkową warstwę abstrakcji pomiędzy aplikacją a standardowymi funkcjami PHP i maskujące różnice nazewnictwa. Do najpopularniejszych rozwiązań tego typu należą AdoDB, pakiety dostępne w PEAR i Creole. Jakkolwiek biblioteki te dość dobrze spełniają swoje zadnie, to nie są pozbawione wad. Podstawowym problemem jest różnorodność dostępnych rozwiązań, przez co rozpoczynając nowy projekt musimy zastanawiać się nad wyborem konkretnej implementacji. Kolejna wada to fakt, iż wszystkie wymienione rozwiązania pisane są jako skrypty PHP, co nie najlepiej odbija się na ich wydajności.

PDO (ang. PHP5 Data Objects) to odpowiedź na wymienione przed chwilą uciążliwości. Zadaniem PDO jest zastąpienie istniejącego, niespójnego wewnętrznie zestawu funkcji, jedną, standardową biblioteką. W odróżnieniu od prekursorów, implementacja wykonana jest w języku C i dzięki temu o wiele szybsza. Architektura PDO to jeden centralny podsystem, zawierający podstawowe funkcje, oraz zestaw sterowników (również jako moduły tworzone w C) do poszczególnych DB. Obsługa błędów związanych z dostępem do bazy danych może odbywać się przy pomocy wyjątków, co znakomicie upraszcza kod naszych skryptów.

Dla osób korzystających z AdoDB czy Crole praca z PDO nie sprawi najmniejszego problemu. Nowicjusze również nie powinni poczuć się zagubieni. Wystarczy spojrzeć na Listing 14, by przekonać się, że nowy model współpracy z DB nie jest trudny do zrozumienia.

Jedyna informacja o typie bazy danych, do której się łączymy, zawarta jest w parametrach konfiguracyjnych. Przykładowy kod korzysta z PostgreSQL, ale przełączenie się na MySQL to tylko kwestia zmiany trzech pierwszych linijek.

Siła PDO leży nie tylko w uporządkowaniu dotychczasowego chaosu związanego z funkcjami dostępu do DB i zapewnieniu abstrakcji przy operacjach z wykorzystaniem bazy danych. Bardzo dobrze rozwiązany jest problem uciążliwego przygotowania danych do przesłania do DB a pochodzących od użytkownika (ang. Quoting). Wystarczy przygotować instrukcje INSERT i UPDATE tak, jak na Listingu 15, a PDO automatycznie zastąpi kłopotliwe znaki.

Podobnie jak SPL, PDO jest nowością w PHP. Oficjalna premiera zbiegnie się z wydaniem wersji PHP5.1. Mimo młodego wieku, to prawdopodobnie te dwa rozwiązania będą w jakimś stopniu wyznaczać kierunek rozwoju nowoczesnego PHP.

Listing 14. Dostęp do bazy danych z użyciem PDO

$dsn = 'pgsql:host=localhost dbname=txtest';
$user = 'postgres';
$password = 'postgres';
try {
    $dbh = new PDO($dsn, $user, $password);
    $stmt = $dbh->prepare("SELECT * FROM users WHERE userstatus = 1");
    if ($stmt->execute()) {
        while ($row = $stmt->fetch()) {
            echo $row["userid"];
            echo $row["fullname"];
            echo $row["userstatus"];
        }
    }
}
catch(PDOException $e) {
    echo 'DB error: '. $e->getMessage();
}
Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (5)
Brakujące listingi
Czwartek 11 Grudzień 2008 8:58:45 am - feft

Widzę, że do dzisiaj nie pojawiły się brakujące listingi - wielka szkoda.
Piotr

listingi
Wtorek 07 Sierpień 2007 8:14:16 am - Olimpia_ona

"Na Listingu 16 zaprezentowaliśmy prosty plik XML, którym będziemy manipulować w kolejnych przykładach."
A gdzie ten listing? Nie ma też listingu 17.
XML / WebServices to interesujący mnie temat, szkoda że z tego artykułu nic się nie dowiedziałam.

super
Czwartek 21 Czerwiec 2007 3:35:34 pm - pawelad <pawelkostomloty_at_op.pl>

Kocham obiektowosc a ostatnio interesuje sie php. Wasza stronka to miod na moje serce. No to macie kolejnego wyznawce.

magiczne metody, przestrzenie nazw
Sobota 11 Marzec 2006 11:38:11 am - mysz

Od wersji php5.1 doszły dwie magiczne metody: __isset i __unset, wywoływane, jak ich nazwa wskazuje, gdy na własności obiektu użyje się funkcji isset() lub unset(). Bardzo przyjemne.

A co do przestrzeni nazw, to mój sposób na implementacje ich w PHP5: http://diary.urzenia.net/?p=261

techniki obiektwe rulezzz
Sobota 28 Styczeń 2006 5:37:00 pm - emp

Ja sobie osbiście nie wyobrażam robić projekt w php bez udogodnien dla technik obiektowych... choć te narazie w wersji 5 wygladaja dość żałośnie to wole to od braku takich udogodnien.. pozatym łapanie wyjątków to podstawowe udogodnienie bez ktorego ciężko się obejśc w większych projektach... tak ja wiem ze takie powstały tylko przy użyciu php5 moze je wykonać jeden człowiek a nie zespół... czcionka jest qrefsko mała ledwo widze co pisze..

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2022 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System