dev.cervino.pl

24 Sierpień 2008

Cerberus

Zamieszczony przez: Bartek Leśniak w: Biblioteki | Cerberus

Czyli co trzy głowy to nie jedna :) Cerber to kolejna biblioteka, którą chciałbym przedstawić. Do wydania stabilnej wersji jeszcze długa droga i pojawi się ona nie wcześniej niż Zephyr. Biblioteka ta będzie służyła do komunikacji z bazą danych. Główne założenia to: ORM, ActiveRecord, obsługa cache’owania. Całość będzie oparta o PHP Data Objects, ale o całkiem innym interfejsie.

Przykładowy interfejs (pobieranie danych) prezentuję poniżej. Jak na razie jest to tylko sama idea (nic nie zostało jeszcze zaimplementowane), dlatego też prosiłbym o komentarze – co poprawić, usunąć, a może podejść do tego z zupełnie innej strony :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// wygenerowane zapytanie:
// select `id`,`nazwisko` from `users` where `imie` = 'Bartek' and `wiek` < 25 order by `wiek` desc limit 5,10

// przykład 1
$result = $db -> get('users', array('id', 'nazwisko'))
              -> where(new CerCond('imie', CerCond::EQ, 'Bartek'), CerCond::COND_AND, new CerCond('wiek', CerCond::LT, 25))
              -> orderBy('wiek', CerQuery::DESC)
              -> limit(5, 10)
              -> execute();

// przykład 2 (inna budowa zapytania + dodatkowo sprecyzowane typy zmiennych)
$cond  = new CerCond( new CerCond('imie', CerCond::EQ, 'Bartek', CerCond::PARAM_STR),
                      CerCond::COND_AND,
                      new CerCond('wiek', CerCond::LT, 25, CerCond::PARAM_INT) );

$query = $db -> get('users', array('id', 'nazwisko'));
$query -> where($cond);
$query -> orderBy('wiek', CerQuery::DESC);
$query -> limit(5, 10);

$result = $query -> execute();

// wynikiem działania metody execute() będzie tablica obiektów CerResult

P.S. Wie ktoś może jak zrobić w WordPressie, żeby kolorował składnię PHP? CodeColorer :)

2 odpowiedzi na "Cerberus"

1 | Całek

25. Sierpień 2008 o 21:10

Nie szybciej zrobić zwykłego SQLa niż bawić się w takie szopki? ;-)

2 | bartek

25. Sierpień 2008 o 21:14

IMO nie :) Jak dla mnie na przykład zdecydowanie wygodniej jest tak. No i dodatkowo sobie możesz jakieś filtry porobić, nie mówiąc już o walidacji zmiennych :)
Poza tym – kod czytelniejszy, zabezpieczenie przed SQL Injection, cache’owanie zapytań.. zalet jest mnóstwo :)

Formularz komentarza

Kategorie


Ostatnie komentarze


  • Paweł Szołtysek: Keep up good work ;-)
  • bartek: IMO nie :) Jak dla mnie na przykład zdecydowanie wygodniej jest tak. No i dodatkowo sobie możesz jakieś filtry porobić, nie mówiąc już o walida
  • Całek: Nie szybciej zrobić zwykłego SQLa niż bawić się w takie szopki? ;-)
  • Mati: I don't care. I tak dałbyś mi kod ;)))))))