Hlavním jazykem pro vývoj backendových aplikací je pro nás PHP. Použili jsme a používáme řadu dalších jazyků (C++, Python, Node.js, Perl, …), ale PHP hraje prim. Kromě samotných začátků jsme ovšem nepsali nikdy v čistém PHP a vždy jsme měli k ruce nějaký framework, který nám práci usnadňoval.

  • Framework 1

První verze našeho interního frameworku, která vznikla pro čtyřkové verze PHP. Nedal by se označit za MVC framework, ale částečně aplikoval základní principy oddělení view vrstvy od business logiky aplikace. Obsahoval šablony, nicméně šablonovacím jazykem bylo samotné PHP. Součástí ještě nebyla žádná databázová abstrakce. Hodně implementoval, dnes již zavržený singleton pattern. Využili jsme ho například pro náš Ekonomický Informační Systém, proto obsahoval množství tříd pro práci s formuláři, gridy a vším, co je potřeba pro standardní CRUD aplikaci.

  • Framework 2

Druhá verze našeho framoworku nebyla pouhou evolucí verze první, ale spíše novým MVC frameworkem. Psán byl pro pětkové verze PHP a kromě jiného jádra obsahoval několik nových komponent.

Tou nejzajímavější byla abstraktní databázová vrstva. Nejednalo se o ORM v plném slova smyslu tak, jak jsme dnes zvyklí třeba z Doctrine. Existovala sada tříd popisující databázový model, výstupem však byl obecný datasource. Důraz byl kladen na výkonnost a použití pro gridy či jiné hromadné dotazy. Díky tomu tato vrstva skládala minimalistické dotazy a vracela jen nutná data.

V jádru došlo k většímu oddělení view vrstvy od aplikační logiky, šablonovacím jazykem ovšem stále zůstalo PHP.

Tento framework mimo jiné po mnoho let poháněl, a po množství modernizací stále pohání, on-line rezervační letenkový systém GOL IBE.

  • CakePHP

S tímto frameworkem jsme přišli do styku díky převzetí aplikace po externím vývojáři. Byla to jedna z prvních verzí a rozhodně nás CakePHP nepřesvědčil k opuštění vlastního řešení. Ani v budoucnu, při letmém zkoumání dokumentace, se náš názor nezměnil.

  • Nette

Když jsme v roce 2014 rozjížděli nový projekt pro virtuální mobilní operátory (VMO), rozhodli jsme se dát šanci některému z existujících frameworků. Usoudili jsme, že nazrál čas přestat investovat do vlastního řešení a že dostupné frameworky již pokryjí většinu našich požadavků. Českou PHP komunitou tehdy hodně rezonovalo Nette a tak i naše volba padla právě na něj.

Hned v první aplikaci jsme Nette využili opravdu nadoraz a byli jsme nucení nahlédnout i pod kapotu. Tehdejší stav frameworku shrnul kolega slovy: David Grudl odvedl všechnu špinavou práci za nás, abychom my již mohli psát čistý kód.

Využití Nette však zásadně změnilo a následně definovalo náš styl návrhu a psaní aplikací na několik dalších let. Zároveň se stalo zlomem ve využití open source knihoven jiných vývojářů v našich projektech, což do té doby bylo u nás vzácné – vždy jsme spoléhali spíše na vlastní řešení. Díky DI jsme také konečně začali pořádně pokrývat aplikace automatickými testy. Již předtím jsme PHPUnit používali, ale s aplikacemi protkanými závislostmi to nebylo nic hezkého.

  • Symfony

V posledních letech jsme se podíleli na několika projektech s partnerskými společnostmi, které více využívali framework Symfony. Již dříve jsme ho v několika specifických případech použili, mnohé Symfony knihovny byly součástí našich Nette projektů, ale teprve tato spolupráce nám dala prostor si tento framework pořádně osahat. Potvrdili jsme si, že od dob, kdy jsme vybírali náhradu za náš Framework 2, ušlo Symfony díky komunitě obrovský kus cesty, který Nette dohání jen s obtížemi. Ve chvíli, kdy composer.json našich aplikací začal obsahovat podstatně větší množství knihoven ze Symfony než z Nette, učinili jsme poslední krok a změnili i jádro. Poslední aplikace jsou tak psány plně s využitím Symfony.

Co nám tato změna přinesla? Pokročilá sada nástrojů v ekosystémy Symfony nás zase posunula o kus dál v automatizaci, mnoho knihoven lépe přirozeně zapadne do aplikace a díky tomu se i snížil čas jejího vývoje. Můžeme se také více soustředit na to, jak aplikaci napsat, a méně nato, co použít.

  • Ostatní

Kromě zmíněných typických frameworků, jsme využili mnoho dalších nadstaveb či vývojářských platforem.

Za zmínku určitě stojí redakční systém Joomla, který využívá vlastní framework. Pro nás to bylo jedno z prvních setkání s plnohodnotným MVC frameworkem a napsali jsme nad ním mnoho komponent. Využití našel především pro stránky Pražského mezinárodního maratonu, jejichž několik generací jsme vytvořili.

Nad frameworkem Symfony je mj. vystavěna německá e-shopová platforma Shopware. Ta pohání e-shop euclekarna.cz, který jsme připravili a stále spravujeme pro společnost EUC.

Další nadstavbou nad Symfony, kterou jsme využili, je EasyAdmin, generátor backoffice rozhraní.