Mija rok, a tu ciągle Symfony…Niedługo minie rok, od kiedy zacząłem zaznajamiać się z Symfony.Framework dostarcza znakomicie zrealizowaną implementację MVC oraz ORM oparty na Propelu(dostępna jest też wtyczka sfDoctrinePlugin dla Doctrine).Do tego czasu miałem dreszcze, kiedy przeglądałem rozwiązania open-source dla PHP. Obiektowość na poziomie PHP4 była rarytasem, nie wspominając o wielkich oporach korzystania z dobrodziejstw OOP z PHP5. Uważam, że Fabien Potencier dokonał przełomu.PropelWcześniej nie znałem tak elastycznego rozwiązania dla PHP, więc żyłem w świadomości, że najlepszy framework zrobię sam.Miałem już ciekawe rozwiązanie, w którym jednak najdotkliwiej kulał ORM. Na szczęście Fabien wydał stabilną wersję Symfonyi nie musiałem już tracić czasu na debug i poprawki. Z resztą i tak mój ORM miał się nijak do znakomicie zaprojektowanego Propela.Jego architektura umożliwia budowanie logicznie skonstruowanego API. Klasy modeli danych są początkowo puste, dziedziczącjednocześnie po klasach automatycznie wygenerowanych na podstawie schematu bazy danych. W tym miejscu programsta ma pole do popisu - zaczyna implementować interfejsy, przeciążać wygenerowane metody, pisać metody pomocnicze. Dodatkowo Propel umożliwia bardzo łatwe wykonanie transparentnej implementacji wzorca fabryki.O wykorzystaniu Propela jako podstawy do zaprojektowania dobrego API napiszę niedługo w innym wpisie.WydajnośćNajwiększe zarzuty do Symfony dotyczyły wydajności. Jednak framework opiera się na zasadzie cache`owania wszystkiego, co się da - począwszy od konfiguracji, aż po cache wygenerowanych klas automatycznych. Ponadto istnieje sporo wtyczek z działu “performance”. Na dokładkę Propel 1.3, w wyniku przejścia z Creole na PDO, osiąga wg benchmarków dwukrotny zysk wydajności w stosunku do wersji 1.2. Nie znam rozwiązania oferującego tak wiele i będącego jednocześnie wystarczająco wydajnym (no może Python + django, ale zostańmy przy PHP).Ciekawe wtyczkisfPropelActAsTaggableBehaviorPlugin - umożliwia tagowanie modeli danych, dodaje możliwość generowania tag-cloudsfPropelParanoidBehaviorPlugin - wyłącza rzeczywiste usuwanie obiektów poprzez wprowadzenie flagi deleted_atsfPropelVersionableBehaviorPlugin - dostarcza mechanizm wersjonowania modeli danychsfPropel13Plugin - umożliwia użycie Propela w wersji 1.3 bez konieczności zmian core-owych w SymfonysfModelTestPlugin - już nie będziesz miał problemów z uruchomieniem unit testów dla modeli danychPonad to testowałem wtyczki udostępniające gotowe rozwiązania, jak blog, prosty cms, forum (admin nie działał), newsy. Wszystkie (z małym wyjątkiem z forum) działały od razu i bez problemów. Jedyny mankament to brak spójności - wymienione pluginy nie korzystają ze wspólnych szablonów i wdrażając bardziej rozbudowany projekt trzeba zająć się szablonami dla każdego modułu z osobna.Więcej wtyczek znajdziesz na http://trac.symfony-project.com/wiki/SymfonyPluginsWarto odwiedzićSymfony framework po polskuWikipedia o SymfonyDokumentacja Symfony 1.1Symfony API
No Comments
No comments yet.
RSS feed for comments on this post. TrackBack URL
Sorry, the comment form is closed at this time.
Buty Nike Adidas
kompresory Rihanna Kopiarki