php ma się dobrze
Siłą każdego języka jest jego społeczność, a nie sam język. Taki php, choć u podstaw był niezwykle ubogim językiem (a wg wielu wciąż jest), to szybko zyskał sympatię tysięcy wannabe programistów, wśród których znalazło się paru twórców przyszłych aplikacji, na których oparła się spora część dzisiejszego internetu – żeby wymienić tylko phpBB, wordpress i niezliczone zastępy CMS-ów.
Przez długi okres czasu wydawało się wszystkim, że jak aplikacja webowa, to tylko php. Owszem – był perl (tylko weź w tym pisz…), asp.net, czy java – ale ludzie albo tych rozwiązań nie znali, albo jak już znali, to na przeszkodzie stawał problem z serwerem (a raczej jego brakiem), który by wspierał inną niż php technologię, czy też wspomniana społeczność – w tym przypadku mikra.
Nagle jakby znikąd pojawił się język Ruby ze swoim Ruby on Rails – fenomen, który odmienił dzisiejszy internet. Framework, który zapoczątkował wielki boom na wzorzec MVC i obiektowe tworzenie stron. Genialność tego rozwiązania, która pozwalała w ekspresowym tempie tworzyć nowe aplikacje, sprawiła, że ludzie masowo dopadli Railsy, Django, Pylonsy i inne podobne frameworki, które pokazały światu, że web to nie musi być tylko php, ale też inne języki – jak wspomniane Ruby, czy bardzo popularny na świecie Python.
A jak w tym całym zamieszaniu zachowuje się nasz główny bohater? Okazuje się, że tylko na tym skorzystał kopiując rozwiązania z wspomnianych produktów. Dziś mamy dostępne dwa główne projekty, które sprawiają, że php wciąż pozostaje atrakcyjnym językiem – mowa o Symfony oraz Zend Frameworku. Choć to oczywiście nie wszystkie rozwiązania, niemniej pozwolę sobie skupić jedynie uwagę na tych dwóch. Raz, że oprócz nich miałem do czynienia jedynie z Code Igniterem, który przypomina ubogiego brata ZF, dwa, że to chyba najlepsze dziś produkty tego typu.
Oba frameworki prezentują zupełnie inne podejście do tematu – ZF to zbiór niezależnych klas (w tym abstrakcyjnych oraz intrefejsów), przy pomocy których programista może w miarę łatwo i komfortowo zbudować gotową aplikację. Z których jednak skorzysta, a które zamieni na bardziej mu odpowiadające zamienniki leży już jednak w całości w jego woli. Ponadto praktycznie niemal nic nie ma narzuconego z góry – co oznacza też, że wciąż ma sporo kodu do napisania.
Symfony to zupełnie inne podejście – tutaj preferuje się, żeby programista pisał jak najmniej tylko możliwe. Po ściągnięciu symfony, ustawieniu kilku plików konfiguracyjnych, wklepanie poprzez CLI kilkunastu poleceń możemy uzyskać gotową aplikację, z dziesiątkami tabel w bazie i pełną ich obsługą. Do tego repozytorium symfony pełne jest gotowych pluginów, które są w zasadzie gotowymi cząstkami aplikacji – cms, forum, autoryzacja, wyszukiwarka, ajaxowe efekty itd.
Jedno i drugie rozwiązanie ma swoje wady i zalety, ale nie chcę się tu nad nimi rozwodzić. Ważniejsze jest, że oba produkty rozwijają się bardzo dynamicznie. Za ZF stoi Zend, firma współtworząca sam język, więc o jakość tego frameworka i jego “przyszłościowość” martwić się nie trzeba. Symfony natomiast po dość długim okresie stagnacji nabrało ostatnio sporego rozpędu i jest w ciągłym rozwoju (swoją drogą – trochę to przeszkadza, bo dokumentacja staje się mocno niekompletna). Najnowsze wersje w zasadzie nadrobiły większość wad w stosunku do ZF (z widgetami do tworzenia formularzy na czele), a to nie koniec rozwoju tego frameworka.
Taka sytuacja powinna ucieszyć tych z programistów, którzy z różnych względów chcą pozostać przy php (jak choćby dostępność serwerów). Wspomniane narzędzia niejako gwarantują, że pomimo rozwoju “konkurencyjnych” społeczności pehapowcy nie zostaną w tyle. A należałoby tu jeszcze wspomnieć choćby o ORM-ach, które również nie stoją w miejscu i ciągle dynamicznie się rozwijają (Doctrine, Propel).
Niektórzy twierdzą, że nie ma złych języków – są tylko źli programiści. Faktem jest, że php jest językiem z tego gatunku, gdzie łatwo o złe nawyki i “złe programowanie”. Niemniej dzisiejszy rozwój pozwala pokazać, że php nie jest taki zły jak go malują – i w tym języku naprawdę da się dobrze programować. Czy to oznacza, że nie warto przerzucić się na Pythona, albo Ruby’ego? Myślę, że powinno to pozostać w indywidualnej kwestii każdego z nas. Na pewno warto dla samego dokształcenia się poznać też inne rozwiązania niż te, z których korzysta się na co dzień; najważniejsze jednak, że niezależnie od dokonanego wyboru mamy dostępne dobre, rozwijające się narzędzia.
