Reklama
Szukaj zleceń na Getak.pl

Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Paweł Ryznar programista

Temat: propel czy doctrine ?

witam :)

czy macie jakieś doświadczenia z doctrine? zastanawiam się czy robiąc nowy, dość duży projekt lepiej użyć doctrine 0.11 czy propela 1.3?
w sieci jest niby jakiś test http://phplightorm.wiki.sourceforge.net/LightOrm+vs+Pr... ale na ile jest on wiarygodny?

ogólnie na anglojęzycznych forach, bloga panują różne opinie
http://www.lone-gunman.be/2008/03/20/why-i-switched-to...
http://redotheweb.com/2008/04/10/propel-is-not-hard-an...
10.06.2008, 20:25

konto usunięte

Temat: propel czy doctrine ?

Hmm... Ja mogę odpowiedzieć z perspektywy Symfony - tutaj domyślnym ORM-em jest Propel, a Doctrine można sobie odpalić jako plugin.
Jak dla mnie Propel i jego konstrukcja zapytań (poprzez obiekt Criteria) jest skrajnie upierdliwa przy bardziej rozbudowanych projektach. W Doctrine masz coś takiego jak DQL (odpowiednik Hibernate-owego HQL-a), a to naprawdę fajna sprawa. Wprawdzie dla Symfony masz taki plugin do Propela (PQL?), ale to dopiero wczesna beta.
Doctrine jest oparte o PDO.
Ogólnie zaletą Doctrine jest to, że masz "wszystko w jednym" - jeśli chcesz się pobawić drzewkami w Propelu czeka cię instalacja pluginu.
Na korzyść Propela przemawia oczywiście jego stabilność, ale ale, z tego co czytałem na stronie Doctrine, ma ona przejść na "stejbl" w sierpniu (20 urodziny jednego z twórców chyba) - zbyt długo czekać nie trzeba.
Poza tym:
- w Symfony 1.0 Propel jest wbudowany, a Doctrine dostępne jako plugin,
- w Symfony 1.1 Propel i Doctrine są dostępne jako pluginy, Propel domyślny,
- w Symfony 2.0 Propel i Doctrine są dostępne jako pluginy, Doctrine domyślna.
Podobno miało być wcześniej, ale Doctrine za bardzo się ślamazarzył jeśli chodzi o przejście na wersję stabilną i wyśrubował trochę za bardzo wymagania PHP.
11.06.2008, 10:36

Krzysztof P. Programista, Team
Leader

Temat: propel czy doctrine ?

Przy Propelu bym uważał, bo wersja 1.3 to jeszcze beta, więc mogą być z nią problemy.

Co do wyboru, to nie wiem czy próbowałeś pisać w obu coś nawet prostego. Ogólnie Propel będzie szybszy, ponieważ generuje statyczny kod, a nie interpretuje w trakcie działania.
Do tego Propel będzie wygodniejszy w użytkowaniu, po pierwsze definicja w XML, tylko tyle ile trzeba, ja używam Eclipse+PDT i tam dodałem DTD (coś XSD nie chciał załapać) i piszesz z podpowiadaniem składni, a to ułatwia.
Kolejny plus to że dzięki wygenerowanym klasą masz podpowiadanie składni, więc przyspiesza to pisanie, bo nie musisz pamiętać dokładnie jak co się nazywa, dzięki temu mniej błędów się robi, bo nie ma literówek.

Co do pierwszego blogu, to mimo że niby pisze się więcej, tak na prawdę napiszesz to szybciej i bez błędów, bo masz podpowiadanie, to na prawdę zmienia wiele. Do tego jak się chce robić bardziej złożone rzeczy, można je umieścić jako metody w specjalnie do tego przygotowanej "pustej" klasie (ech jest do niej określenie, ale wyleciało mi z głowy)

Jak tak czytam, to dwie rzeczy mi się nasuwają, czy lidzie nie korzystają z podpowiadania składni? A druga czy wolą pamiętać wszystkie tabele i kolumny w projekcie, niż nauczyć się jeden raz korzystać z Criteria. Co do czytelności, to chiński jest dla nas nieczytelny, ale czy oznacza że nie może być łatwy do zrozumienia?

Ogólnie polecam wypróbować oba, w czymś nawet małym, i zobaczyć co lepiej Ci pasuje, bo to części kwestia indywidualna.
11.06.2008, 11:20

Krzysztof P. Programista, Team
Leader

Temat: propel czy doctrine ?

@Jakub Bajorek
Jak lubisz być trendi to Twoja sprawa, jak mowa o dwóch rzeczach, to omawiajmy ich realne zalety, a nie gdzie i kto korzysta.
Ludzie mają tak, że czasem popadają w zachwyt, a potem wychodzi, że sami nie wiedzą dlaczego.
(Tak jak szybko można pokazać, że Python jest raczej niezbyt dobrym rozwiązaniem do pracy z nim, szczególnie przy większym zespole. Bo nie ma ludzi idealnych.)
11.06.2008, 11:26

Łukasz Bandzarewicz programista Ruby,
Java, JavaScript
(nie przyjmuję
zaprosz...

Temat: propel czy doctrine ?

Michał Sędziwój:
>
Kolejny plus to że dzięki wygenerowanym klasą masz podpowiadanie składni, więc przyspiesza to pisanie, bo nie musisz pamiętać dokładnie jak co się nazywa, dzięki temu mniej błędów się robi, bo nie ma literówek.

Podpowiadanie składni można rozwiązać za pomocą odpowiedniego komentowania naszego kodu za pomocą phpDoc-a.

/**
* @property string login
* @property string passwd
*/
class User extends Doctrine_Record {}

Dosłownie przed chwilą przykład ten wpadł mi do głowy i nie mam 100% pewności czy będzie działał w eclipse.. :/
Zapewne można stosować też inne sztuczki: http://bakery.cakephp.org/articles/view/setting-up-ecl...
11.06.2008, 11:40

Krzysztof P. Programista, Team
Leader

Temat: propel czy doctrine ?

@Łukasz Bandzarewicz
Dopiero od PDT 1.5 ma być dostępne @property
Do tego to dodatkowa rzecz którą trzeba napisać, a w Propelu masz to od ręki.
11.06.2008, 11:51

Łukasz Bandzarewicz programista Ruby,
Java, JavaScript
(nie przyjmuję
zaprosz...

Temat: propel czy doctrine ?

phpDoctrine wraz z Zend Framework wykorzystałem już w kilku projektach. Mogę z czystym sumieniem powiedzieć, że w porównaniu z Zend_DB czas pracy nad projektem skrócił się przynajmniej o 30% ;)
Dlaczego?:
- doctrine potrafi stworzyć schemat bazy danych z naszych modelów, potrafi wygenerować indeksy, klucze obce, usuwanie kaskadowe, rozumie nawet schematy postgresa
- dodatkowo w plikach yaml możemy w bardzo wygodny sposób zapisać sobie dane testowe (fxtures) wgrywane do bazy podczas tworzenia
W praktyce praca wygląda tak:
1. Tworze zestaw modeli (lub kopiuje je z innego projektu ;))
1a. Dodaje powiązania pomiędzy modelami (hasOne, hasMany)
2. Odpalam skrypt tworzenia bazy danych
3. Wczytuje dane testowe
4. ..ready to go ;)
5. Jeśli chcę zmienić coś w schemacie danych - powrót do 1.
Niestety migracje nie są jeszcze tak dobre jak w RubyOnRails, ale mam nadzieję, że sytuacja niebawem się zmieni.

Inne plusy doctrine to:
- dobre community, szczególnie kanał IRC, gdzie przy odrobinie szczęścia problem można rozwiązać w kilka minut
- dobra dokumentacja
- można bardzo łatwo rozszerzać funkcjonalność o własne pluginy (pseudo miximy zapożyczone z Rubiego)
- świetnie integruje się z Zend Framework
11.06.2008, 11:53

Krzysztof P. Programista, Team
Leader

Temat: propel czy doctrine ?

Łukasz Bandzarewicz:
- doctrine potrafi stworzyć schemat bazy danych z naszych modelów, potrafi wygenerować indeksy, klucze obce, usuwanie kaskadowe, rozumie nawet schematy postgresa

I to jest w Propel, a porównanie miało być Propel i doctrine.
Nie wiem jak z Zend_DB, ale ogólnie w Zendzie jeszcze wiele brakuje aby nazwać FW, więc chwilowo nie będę tego oceniał.
A do tego, raczej powinniśmy starać się pomóc autorowi tematu, niż mówić co nam najlepiej pasuje.
Ale dobrze że to podałeś, bo parę ciekawych informacji zawarłeś, co prawda u mnie w firmie trochę inaczej wygląda rozwój, ale to inna sprawa.

P.S. Kopiowanie z innego projektu to podstawa, bo świadczy o tym że coś co się zrobiło jest bardziej uniwersalne, a to tylko zysk.
11.06.2008, 12:30

konto usunięte

Temat: propel czy doctrine ?

Michał Sędziwój:
@Jakub Bajorek
Jak lubisz być trendi to Twoja sprawa, jak mowa o dwóch rzeczach, to omawiajmy ich realne zalety, a nie gdzie i kto korzysta.
Ludzie mają tak, że czasem popadają w zachwyt, a potem wychodzi, że sami nie wiedzą dlaczego.

A kto tu ci napisał, że popadłem w zachwyt? Albo, że postanowiłem być trendi? Według mnie, skoro twórcy Symfony w ten sposób postawili sprawę, to świadczy to o wartości tego ORM-a. Ci kolesie to nie byle ciołki, wydaje mi się, że znają się na rzeczy.
Czy naprawdę według ciebie podpowiadanie składni w PDT decyduje o wyższości Propela nad Doctrine?
11.06.2008, 16:28

Krzysztof P. Programista, Team
Leader

Temat: propel czy doctrine ?

Jakub B.:
Czy naprawdę według ciebie podpowiadanie składni w PDT decyduje o wyższości Propela nad Doctrine?

Mówimy o jakiej wyższości, bo ja mówię o użyteczności, jak szybko i bez problemowo można pisać, a to daje podpowiadanie składni.
Można napisać więcej linijek kodu (niewiele więcej) i zrobić to szybciej, a będzie też czytelne.
Do tego możemy bez problemu zmienić nazwy w bazie danych a skrypt zostawić bez zmian.
Do tego pytanie korzystałeś z obu?
11.06.2008, 17:55

Paweł Ryznar programista

Temat: propel czy doctrine ?

Jakub B.:
Hmm... Ja mogę odpowiedzieć z perspektywy Symfony - tutaj domyślnym ORM-em jest Propel, a Doctrine można sobie odpalić jako plugin.
Jak dla mnie Propel i jego konstrukcja zapytań (poprzez obiekt Criteria) jest skrajnie upierdliwa przy bardziej rozbudowanych projektach.
no jeśli nie ustawimy sobie podpowiedzi to może być to trochę denerwujące [mi to nie przeszkadza], aczkolwiek jest dostępny plugin sfPropelFinder http://trac.symfony-project.com/wiki/sfPropelFinderPlugin który upraszcza sprawę, no ale tu też pytanie jak to wpływa na wydajność
Jakub B.:
Poza tym:
- w Symfony 1.1 Propel i Doctrine są dostępne jako pluginy, Propel domyślny,
- w Symfony 2.0 Propel i Doctrine są dostępne jako pluginy, Doctrine domyślna.
Podobno miało być wcześniej, ale Doctrine za bardzo się ślamazarzył jeśli chodzi o przejście na wersję stabilną i wyśrubował trochę za bardzo wymagania PHP.
właśnie w związku z nową wersją symfony myślę też o wykorzystaniu doctrine
Michał Sędziwój:
Co do wyboru, to nie wiem czy próbowałeś pisać w obu coś nawet prostego. Ogólnie Propel będzie szybszy, ponieważ generuje statyczny kod, a nie interpretuje w trakcie działania.
tak już nieco pisałem w Propelu, a co do szybkości, doctrine ma cache'owanie zapytań i wyników więc ta różnica się pewnie zmniejszy [nie wiem czy Propel ma cache'owanie co dokumentacja jest tragiczna, w doctrinie to się rzeczywiście postarali]
Michał Sędziwój:
Ogólnie polecam wypróbować oba, w czymś nawet małym, i zobaczyć co lepiej Ci pasuje, bo to części kwestia indywidualna.
sposób użycia raczej nie robi mi różnicy, głównie chodzi mi o wydajność i stabilność przy doctrine i propelu, Doctrine jest trochę "młodsze" i dlatego zastanawiam się czy nie jest to trochę ryzyko, z drugiej jednak strony @Jakub Bajorek ma rację pisząc
Jakub B.:

Według mnie, skoro twórcy Symfony w ten sposób postawili sprawę, to świadczy to o wartości tego ORM-a. Ci kolesie to nie byle ciołki, wydaje mi się, że znają się na rzeczy.

więc moje obawy o stabilność są raczej zbędne, więc pozostaje tylko kwestia wydajności
11.06.2008, 18:11

konto usunięte

Temat: propel czy doctrine ?

Michał Sędziwój:
Do tego pytanie korzystałeś z obu?

Hehe, pewnie, że korzystałem, a jak sobie wyobrażasz moje wypowiadanie się w tej kwestii? ;)
Paweł Ryznar:

no jeśli nie ustawimy sobie podpowiedzi to może być to trochę denerwujące [mi to nie przeszkadza], aczkolwiek jest dostępny plugin sfPropelFinder http://trac.symfony-project.com/wiki/sfPropelFinderPlugin który upraszcza sprawę, no ale tu też pytanie jak to wpływa na wydajność

Tak, jasne, że jest, ale zauważ, to beta.
tak już nieco pisałem w Propelu, a co do szybkości, doctrine ma cache'owanie zapytań i wyników więc ta różnica się pewnie zmniejszy [nie wiem czy Propel ma cache'owanie co dokumentacja jest tragiczna, w doctrinie to się rzeczywiście postarali]

W Doctrine też nie jest z tym aż tak różowo - przeglądnij ją dokładnie, a zobaczysz braki (mam nadzieję, że jak wydadzą wersję stabilną, to będzie już miodzio).
więc moje obawy o stabilność są raczej zbędne, więc pozostaje tylko kwestia wydajności

Na razie powinieneś jednak uważać - dopóki Doctrine nie wyda wersji stabilnej, dopóty w zastosowaniach produkcyjnych Propel jest nr 1.
11.06.2008, 18:19

Łukasz Bandzarewicz programista Ruby,
Java, JavaScript
(nie przyjmuję
zaprosz...

Temat: propel czy doctrine ?

Jakub B.:

Na razie powinieneś jednak uważać - dopóki Doctrine nie wyda wersji stabilnej, dopóty w zastosowaniach produkcyjnych Propel jest nr 1.

Ja bym aż tak z ostrożnością nie przesadzał ;). Kilka serwisów z wykorzystaniem Doctrine już napisałem i póki co nie wystąpiły żadne błędy z winy tego framework-a.
11.06.2008, 19:17

Krzysztof P. Programista, Team
Leader

Temat: propel czy doctrine ?

Łukasz Bandzarewicz:
Ja bym aż tak z ostrożnością nie przesadzał ;). Kilka serwisów z wykorzystaniem Doctrine już napisałem i póki co nie wystąpiły żadne błędy z winy tego framework-a.

To zależy co robisz, bo są takie rzeczy przy których nie możesz mieć takiego czegoś, jak wyjdzie że korzystałeś jeszcze niestabilnej wersji i przez to problemy były, to będzie kiepsko.
11.06.2008, 19:55

Temat: propel czy doctrine ?

Jakub B.:
Hehe, pewnie, że korzystałem, a jak sobie wyobrażasz moje wypowiadanie się w tej kwestii? ;)

Jakub mam pytanie, trafil mi sie projekt w symfony 1.1 a zawsze bylo to symfony 1.0 widze ze pluginy nie dzialaja dla 1.1 no poza sfGuardPlugin mozna to obejsc jakos? Coc widze ze jesli ktos robil np. textarea_tag to w 1.1 juz tego ne ma. hmmmm
17.06.2008, 15:28

konto usunięte

Temat: propel czy doctrine ?

Tomasz Biniecki:
Jakub mam pytanie, trafil mi sie projekt w symfony 1.1 a zawsze bylo to symfony 1.0 widze ze pluginy nie dzialaja dla 1.1 no poza sfGuardPlugin mozna to obejsc jakos?
Można ściągnąć i wgrać do katalogu "plugins", innej możliwości nie widzę - Symfony 1.1 dość ostro obchodzi się z pluginami do 1.0. Nie bez racjo zresztą - porównaj sobie komendy z linii poleceń.
Coc widze ze jesli ktos robil np. textarea_tag to w 1.1 juz tego ne ma. hmmmm
Możesz w pliku "settings.yml" ustawić "compat_10: on" (tam już coś takiego jest, ale zakomentowane) - wtedy 99% "starych" rzeczy (odnośnie formularzy) powinno działać.

Swoją drogą wydaje mi się, że pisać projekt w Symfony 1.1 jest jeszcze ciut za wcześnie - to dopiero RC1.
17.06.2008, 16:20

Paweł Ryznar programista

Temat: propel czy doctrine ?

nie :P już RC2, ostateczna raczej do końca czerwca się pojawi, więc chyba lepiej nieco poczekać z projektem bo tak jakoś bez sensu zaczynać w 1.0
17.06.2008, 18:04

konto usunięte

Temat: propel czy doctrine ?

No tak - ale tutaj zawsze będzie problem z pluginami. Jak używasz jakiegoś, nazwijmy to, wolniej rozwijanego, to sobie trochę poczekasz na wersję na 1.1. Ale swoją drogą, cieszą mnie twoje wieści. ;)
17.06.2008, 21:14

Szymon Gregorczyk Developerem jestem
programistyczno-webo
wym

Temat: propel czy doctrine ?

Witam,
dyskusja ciekawa ale zastanawia mnie jedna rzecz, jak się ma sprawa wymagań obydwu ORM'ów Waszym zdaniem? W niektórych przypadkach hostingów są one chyba dość zaporowe. Szczególnie zabolał mnie ten fragment "Doctrine requires PHP >= 5.2.3+", a zapowiadało się ciekawe urozmaicenie po godzinach spędzonych z Zend_Db.
3.07.2008, 22:28

Piotr Maliński Programista
Python/Django/PyQt4
i PHP :)

Temat: propel czy doctrine ?

Jak się tworzy coś konkretnego to hosting nie powinien być przeszkodą. (choć PHP ma ogólnie z tym problemy)
3.07.2008, 22:42



Wyślij zaproszenie do