Ehh, nauka PHP5 idzie mi dosyć ciężko. Trudno mi załapać tą całą obiektówkę, rzucanie wyjątków, MVC, fabryki, singletony i inne ‘barachło’
Chyba za stary jestem na takie zmiany
Pare ostatnich dni szukałem jakiegoś layera DB. Kiedyś w paru projektach użyłem PEAR::db, potem napisałem (przerobiłem gotową) klasę obsługującą tylko MySQL + mały benchmark czasów wykonania zapytań/ilości zapytań. Teraz musiałbym to przepisac na Oo i PHP5 więc pomyślałem, że rozejrze się za czymś gotowym co będzie z milion razy lepsze niż moje gryzmoły.
I tak oto wpadłem na Creole. Fajna sprawa. Przy okazji ich manualka skumałem wreszcie o co chodzi w tych zapytaniach preinterpretowanych
Młodzi – nie śmiać się
Czytałem fragmencik o tym bodajże w „PHP. Vademecum profesjonalisty” ale nic nie skumałem, kiepsko było wytłumaczone. A tu wystarczyło mi kilka linijek manuala Creole i już, eureka (pyk, zaświeciła mi się żarówka nad „łepkiem”
)
$stmt = $conn->prepareStatement(„INSERT INTO users (id, name, created) VALUES (?,?,?)”);
$stmt->setInt(1, $id);
$stmt->setString(2, $name);
$stmt->setTimestamp(3, time());
$stmt->executeUpdate();
Co to nam daje? Jesli dobrze skumałem to: raz – odpada ciągłe addslashowanie (tudzież mysql_real_escape_stringowanie) wprowadzanych wartości, a dwa – odpada także sprawdzanie rodzaju (string, int, data…) co w sumie zupełnie eliminuje problem sql_injection.
Jak coś pomyliłem, źle skumałem
to dajcie znać w komentach
Ciekaw też jestem jaki wpływ mają takie zapytania na bazy, konkretnie na MySQL? Podnosi to jakoś wydajność? Może wręcz przeciwnie?











Widze ze teraz jest to wlasciwie identyczne z interfejsem jdbc/odbc
Odpada sprawdzanie rodzaju? Czyzby w PHP5 worem Javy wszystko dziedziczy po jakiejs 1 wspolnej dla wszystkich klasie?
Tak, Creole to fajna biblioteka.
A co do wydajności… nie. Nic to nie polepsza ani nie pogarsza od strony bazy danych. Tak czy inaczej Creole prędzej czy później wykonuje zwykły mysql_query (jesli mowa o driverze mysql).
A programowanie obiektowe (w php5 oczywiscie) to bardzo fajna i przydatna rzecz. Szczególnie przy bibliotekach czy frameworkach i ogolnie wiekszych aplikacjach.
Creole było wzorowane na JDBC.
Creole jest małe (względem ADOdb) i nieskomplikowane (względem innych biblitek). Obsługuje najczęściej wykorzystywane systemy bazodanowe (MySQL, PostgreSQL, M$$QL, SQL Lite). Jedno, co zastanawia to PDO, które od PHP 5.1 ma się powoli stawać standardem. Co z tego wyjdzie? Sie okaże.
No i inna rzecz – Creole jest wykorzystywane w Propelu [http://propel.phpdb.org]. Mi obie biblioteki się podobają bo z obydwu korzystam.