Doctrine vs Propel

Doctrine, originally uploaded by r1nghio.

Znalazłem ciekawy post na blogu CodeUtopia dokładnie tutaj. Utwierdza mnie on w przekonaniu, że Doctrine jest lepsze od Propela. Jani Hartikainen na początku porównuje konfiguracje Propela i Doctrine. Doctrine tutaj wygrywa, gdyż jego konfiguracja wymaga napisania jednej albo dwóch linijek kodu, a Propela mnóstwo “Propel needs tons of configuration – Doctrine barely a line or two of PHP code”. Dodaje, że dzięki Doctrine można prosto utworzyć model z bazy danych – potrzebujemy tylko skryptu do połączenia z bazą danych, odwołania Doctrine::generateModelsFromDb i wszystko gotowe!

W Propelu SELECTy wykonujemy z użyciem klasy Criteria:

$c = new Criteria();
$c->add(ExamplePeer::ID, 20);

//SELECT all "Example" models which have 20 as their ID and join all foreign tables.
$items = ExamplePeer::doSelectJoinFoobar($c);

W Doctrine używamy klas Doctrine_* oraz DQL’a, czyli czegoś w rodzaju języka SQL na potrzeby Doctrine. Czy to zaleta? Nie wiem – jednym się to spodoba, a drugim nie.

Tworzenie nowych rzędów jest bardzo podobne w Propelu i Doctrine:

//Propel style
$row = new Example();
$row->setName('Hello');
$row->setOther('World');
$row->save();

//Doctrine style
$row = new Example()
$row->name = 'Hello';
$row->other = 'World';
$row->save();

Autor tutaj zanacza, że Propel ma jedną zaletę w tym stylu zapisu, gdyż Doctrine nie zapisuje zmiennych w modelu.

W podsumowaniu Doctrine wychodzi znacznie lepiej niż Propel. Jani mówi, że nie widzi w ogóle zalet w stosowaniu Propela. Dodaje, że jest słabo udokumentowany i daleko mu do Doctrine. Dodam, że SensioLab jakiś czas temu zatrudniło jednego z autorów Doctrine do rozwijania Symfony, więc prawdopodobnie Doctrine będzie dynamiczniej niż Propel. Więcej info zajdziemy o tym tutaj.

2 komentarzy

Filed under php, Symfony

2 odpowiedzi na „Doctrine vs Propel

  1. znasz jakieś sensowne tutoriale symphony?(oprocz tej strony oczywiscie ;) ), sama dokumentacja jest raczej ciężka na pierwsze zetknięcie się z tym frameworkiem

Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Zmień )

Twitter picture

You are commenting using your Twitter account. Log Out / Zmień )

Facebook photo

You are commenting using your Facebook account. Log Out / Zmień )

Connecting to %s