20 września 2011

Ciasto czy zakalec

W CakePHP tworze już od ponad 3 lat i nadal jest to jedno z najczęściej wykorzystywanych przeze mnie narzędzi, jednak od jakiegoś czasu zaczyna mnie ograniczać, co szczególnie ujawniło się podczas ostatniego, realizowanego przeze mnie, projektu. Dotarło do mnie stwierdzenie, że jednak nie we wszystkim Cake jest idealny. Jeżeli jeszcze raz miałbym realizować taki projekt, na pewno nie wybrałbym po raz kolejny tego rozwiązania.

Oto moje luźne przemyślenia po tych latach pracy i nie traktujcie je zbytnio poważnie - po prostu to jest mój punkt widzenia...

  • Modele są świetnym rozwiązaniem, jeżeli chodzi o warstwę biznesową oraz że w tym modelu definiujemy walidację naszych danych - sprawdza się wprost idealnie pod warunkiem, że z reguły ma się jeden formularz (bądź jego niewielkie modyfykacje) dla których wspólna jest walidacja pól. Jednak takie rozwiązanie niezbyt się sprawdza, gdy każdy formularz musimy walidować w nieco odmienny sposób, np. w zależności od grupy zalogowanego użytkownika (różne wymagania odnośnie wymagalności pól). W takim przypadku możemy np. zdefiniować różne modele dla różnych wersji formularzy, które jednak będą odnosiły się do tej samej tabli. Inne rozwiązanie (IMO lepsze) jest zdefiniowanie różnych walidacji, które sobie przełączamy w zależności od potrzeb. Po ostatnim roku takie rozwiązanie nie jest zbytnio korzystne przy dużych projektach. Zdecydowanie lepsze rozwiązanie niosą ze sobą np. takie frameworki jak chociażby Symfony czy Django, gdzie mamy modele ale osobno możemy zdefiniować formualrze na ich podstawie. Wówczas nie mamy problemów (lub mamy ich zdecydowanie mniej) z różnego rodzaju formularzami. To jest oczywiście kwestia gustu, które rozwiązanie jest lepsze, ale akurat to zastosowane w Cake’u nie do końca całkowicie się sprawdza.
  • Stronnicowanie, które ma zaimplementowany framework, sprawdza się wyśmienicie ale także pod pewnymi warunkami. Gdy chcemy połączyć więcej modeli/tabel (niekoniecznie powiązanych ze sobą wprost w modelach) lub zrobić jakieś poważniejsze zestawienia na takich listach (zestawienia, sumowanie), natykamy na trudności. Nie są to co prawda trudności nie do pokonania, jednak szkoda że w takim wypadku nie możemy zdefiniować sobie widoków i wygodnie z nich korzystać.
  • Brak jest jednego oficjalnego repozytorium z dodatkami (takie jakie posiada Symfony czy chociazby Yii). Poza tym na bakery.cakephp.org pojawia się tyle śmieci, że szkoda się przyznawać do tego, że używa się tego frameworka.
  • Mam wrażenie, że CSRF nie działa do końca sprawnie - nie raz zdarzyło mi się oglądać biały ekran po submicie formularza, tylko dlatego że formularz posiadał więcej pól i część pól była uzupełniana za pomocą ajaxa. Zamiast informować o fakcie, że coś nie gra z formularzem pokazywał mi się biały ekran... chyba że to właśnie jest owe zabezpieczenie.
  • Brak IDE które wspierałoby prace w tym frameworku - chociażby pełne podpowiadanie składni (słyszałem co prawda o tworzeniu edytora specjalnie dla CakePHP, ale póki co są to dopiero pogłoski). Nie ma się temu co dziwić, bowiem ten framework część rzeczy generwuje w „locie” - na podstawie chociażby pól zdefiniowanych w tabelach bazy danych a główny team-core nie robi zbyt wiele, aby zachęcić firmy, które tworzą oprogramowanie żeby dodały wsparcie dla tego frameworka.
  • Na horyzoncie pojawia się już wersja 2.0 frameworka - jednak nie są to zbyt rewolucyjne zmiany (a szkoda) raczej powolna ewolucja. Szumnie zapowiadane jakiś czas temu znaczne przyspieszenie pracy frameworka okazuje się tak naprawdę jedynie chwytem reklamowym. Wzrost wydajności co prawda nastąpił ale nie aż tak. Jedyne dobre widaomości to takie, że w końcu kończy się wsparcie dla PHP4 i będziemy mogli używać więcej możliwości z wersji  5.2.x (i wyżej) - np. w końcu zdecydowali się na obsługę wyjątków (długo na to czekałem), lazyloading ale tylko tam gdzie jest ma sens (IMO sens jest w większości przypadków). Natomiast szkoda że nie wprowadzono możliwości definiowania namespaces (to od wersji PHP5.3) bo to dałoby dużo więcej swobody dla developera oraz szkoda, że nie wprowadzono jakiegoś suffix’a lub prefix’a dla akcji w kontrolerze.

To chyba tyle na ten temat. Pomimo jego wad nadal uważam CakePHP za ciekawego frameworka do niezbyt skomplikowanych stron czy małych aplikacji. Do większych rzeczy na pewno wybiorę inne rozwiązanie, które zapewni lepszą i bardziej wygodną pracę oraz będzie na tyle elastyczne, że pozwoli realizować większość pomysłów.

Brak komentarzy:

Prześlij komentarz