CW(0,2) - Pak přišla doba PHP frameworků
Od 2010 to zhruba počínalo zachvacovat svět a až v 2020 to vypadá, že jakákoli tvorba nového PHP projektu už se samozřejmě bude odehrávat v nějakém frameworku (v Laravelu).
Frameworky prošly klasickým vývojem: Jako každý vliv z ciziny a ze západu z počátku nebyly brány vážně jako základ ke stavění, ale jenom jako takový příklad, jako ukázka a učebnice, k programování něčeho podobného vlastního. Odhaduji, že tak od 2016 (podle nabídek trhu práce) to bylo českou komunitou pochopeno správně a ve velkém, coby nepostradatelný základní prefabrikát velmi usnadňující a se zbytkem světa sjednocující vývoj jakéhokoli nového PHP projektu. Nový PHP projekt začal být konečně chápán jako součást a nadstavba nové instance nějakého frameworku, tedy jednotného a bezchybného základu funkcí, které jsou neustále udržovány a vylepšovány a které řeší zázemí kolem sessions, cookies, user registration, templating, práci s databázemi atd., aby si tvůrci mohli hledat odpovědi na Stackoverflow (a vůbec se dorozuměli jednotným názvoslovím daného frameworku). Pomocí konvencí pro kódování díla v daném frameworku a pomocí návrhového vzoru MVC je pak zaručena co možná nejvyšší snadnost spolupráce mezi kterýmikoli z více spolutvůrců a také kontinuita v čase.
Je to tvůrčí zázemí
PHP framework jako tvůrčí zázemí, v tomto případě konkrétně Laravel, poskytuje svým uživatelům (tvůrcům webů):
Důmyslnou knihovnu funkcí kolem přihlašování a registrace uživatelů. Tím Laravel ještě v 2020 dost vynikal nad ostatními frameworky.
Příkazovou řádku. Ano, vnitřnosti Laravelu můžete ovládat přes vlastní příkazovou řádku, která jako interpret jazyka PHP rozumí sadě příkazů jimiž lze ovládat materiálie daného Laravel projektu. Typicky např. osidlování databáze smysluplnými fiktivními daty.
Podpora MVC přístupu, který odlišuje řídící logiku od zobrazování dat, či obsah od formy, chcete-li. Díky tomu může libovolný programátor světa přijít k dílu někoho jiného a začít ho opravovat, přičemž stráví jen minimální dobu úvodním pochopením jeho projektu.
Templating engine, jenž usnadňuje práci na vzhledu šablon webu a řeší použití opakovaných a neopakovaných regionů v zobrazení stránky.
Celý portál extenzí, jež jsou jako objektové PHP knihovny stvořeny k tomu, aby zdarma poskytovaly náročnou funkčnost k roztodivným specialiálním využitím.
Dokonalou dokumentaci, příklady, celosvětovou komunitu lidí a zvětšující se množství existujících videonávodů jak dosahovat jednotlivých cílů v Laravelu.
Diktát uniformity
Ačkoli je framework nakonec opravdu vnímán pozitivně jako zázemí pro odpíchnutí se k další tvorbě, framework je zprvu vnímán jako diktát nových poměrů a jako přihoršující vzdálení se od čistého PHP.
Frameworky versus čisté PHP
Po celou dobu tvorby jasně vidíte, že framework dělá z PHP jiný jazyk. Tento problém je pro ortodoxní programátory v čistém PHP mimořádně zneklidňující. Najednou je vám totiž dokumentace a návody k PHP k ničemu, protože prostě programujete v novém vlastním jazyce toho kterého frameworku. Od jednoho dne najednou musíte užívat syntaxi a názvy funkcí z frameworku, už ne z PHP, které znáte dvacet let. Bohužel. Je to stejný problém jako nynější přesouvání nových kultur do Evropy, které jednou převládnou a tu původní nahradí. U PHP frameworků také nervózně zvažujete, kam až může tohle jednou zajít? Bohužel.
Kde a kdy použít
Přečetl jsem tři diskuze programátorů na téma Pure PHP or framework. Přispivatelé se tam vesměs shodují, že po 2018 už všechny nabídky práce požadují framework, takový, ve kterém je ta firma zrovna zvyklá dělat. V osobních projektech kde je tvůrce zároveň majitelem se většina přiklání k použití čistého PHP, protože to je univerzálnější, známější, robustnější, dá se v něm více experimentovat, nesrovnatelně lépe se vždy deployuje na server a běží vždy rychleji než framework.
U většího počtu malých projektů je zase nejlepší použít stejnou základnu kódu z časových důvodů, a k tomu jsou frameworky přímo stvořeny. To samé platí pro vývoj větší aplikace, kde je nutné, aby na jednom díle spolupracovalo více programátorů. To je vlastně důvodem vzniku MVC architektury.
They all suck
Rasmus Lerdorf, současný tvůrce samotného PHP, tedy někdo jako bůh, se v posledních letech ještě zřetelněji proslavil výrokem, že všechny frameworky ho štvou, jako odpověď na otázku, co na PHP frameworky říká. Zapátral jsem podrobněji na internetu po jeho vysvětleních, která na to nepřekvapivě jdou z perspektivy čnící vysoko nad námi. Frameworky oproti čistému PHP štvou Rasmuse Lerdorfa z těchto důvodů:
Neustále opakují vykonávání toho samého kódu bez skutečného důvodu, je to prostě jejich modus operandi.
-
Vnášejí do díla příliš mnoho cizích nezávislých knihoven třetích stran.
-
K řešením problémů reálného světa podle něj přistupují nepožadovaně komplikovanou cestou (pramenící právě z generalizace).
-
Duplikují funkčnost webových serverů. To jediné mohu z vlastních poznatků potvrdit sám.
Rozdělují nás
Já bych se ještě připojil s pátou drobností, která není tolik věcná: Že frameworky rozdělují etnikum péhápkářů, které do té doby mluvilo jedním jazykem PHP, do více menších subkomunit, které každá mluví svým dílčím jazykem frameworku. Klasické PHP, které je pro frameworky přesahem, se bude časem stávat minoritní, vnímáno pouze jako mid-level jazyk na tvorbu high-level jazyka frameworků, což je přinejmenším pro programátory vyrůstající ještě na konci 90. let mimořádně děsivé. Ano, časem sice převládne Laravel, jenž frameworky sjednotí na jeden, nicméně podobná situace tu nikdy nebyla. Je to stejný případ, jako když Zeman rozděluje národ na pravicové a levicové voliče, ačkoli sám vyhraněným levičákem vlastně ani není.
Tolik prosazovaná ctnost “čistého” kódu frameworků je vlastně nevýhodou
Autoři frameworků neustále zdůrazňují, že syntaxe jazyka je more clean (čistší), jako kdyby původní PHP čisté nebylo. V jejich pojetí to znamená, že kompozice vět v Laravelu je jen a jedině kratší. Kratší příkazy na řádek, ale o to víc člověk musí přemýšlet nad jejich chápáním.
Nový koncept textových návěští
Nový systém přiřazování proměnných a hodnot funkcí textovým návěštím je matoucí, nový a cizí. Z pohledu původního PHP je komplikovanější, je větším zdrojem chyb a obtížně se zprvu učí právě proto, že syntaxe není tolik přímočará. V krátkých příkazech frameworků chybí dost znamének a příkazů, které činily původní PHP čitelným (jednoduchým na letmé pochopení). Podle mě zkracování jazyka PHP rozhodně neznamená jeho usnadňování tvůrcům softwaru.
Příklad: Klasické PHP používá koncept $proměnná=”hodnota”;
Frameworky místo toho zavádějí nový koncept ‘návěští’=$proměnná;
No není to svinské? Pro první pochopení frameworků je to jak zlý sen.
Podobně matoucí je taktika MVC
Stejný problém máme zpočátku s architekturou MVC, která přináší do původního přímočarého PHP dost zmatku. Po celý běh dějin jsme v PHP řešili logiku na tom místě, kdy poprvé vystoupila na světlo její potřeba. V obecnějším případě jsme si udělali knihovnu funkcí a v místech skriptu jsme volali dříve nadefinované funkce.
Nyní si musíme napřed uvědomit, co je kód modelu, co je kód controlleru a co patří nebo naopak nesmí patřit do view, pak zjistit, kde tyto v hierarchii souborů máme umístěny (každý jinde) a nakonec je vypsat do tří souborů, které odporují přirozené logice. A to vše jen kvůli tomu, aby nedej bóže jednou mohl editovat náš kód někdo, kdo přijde po nás.
Na MVC se dá rychle zvyknout, textová návěští působí rozčarování trochu déle, ale v zásadě to nejsou skutečné problémy. Je to prostě jen dělání nového high-level jazyka na motivy do té doby bezproblémového mid-level PHP.
OOP overhead, nezvedá se vám žaludek?
No a když už jsme u toho zrazování od frameworků, tak si dovolím poslední výtku, již beru za vrcholně trapnou a jež se týká OOP kostry, režijní (organizační) základny kódu. Určitě znáte ty jejich video-návody z Youtube, kolem OOP-PHP a frameworků: Ten chlap tam veledůležitě prvních 40 minut napíše 4 stránky objektové kostry, jen “aby už mohl začít programovat”, přitom je to jen objektové pozadí, nic neřešící hlušina (režie, overhead), v níž není ani jediná funkce řešící obsah nebo řídící logiku, jenom taková upomínka na to, jak byl svět přímočarý a účinný v dobách funkčního paradigmatu programování!
Dál už jen povzbudivě.
Laravel ve stručnosti
Laravel je nepochybně nejlepší PHP framework současného světa a do pár let nejspíš ovládne celý trh kolem vývoje softwaru v PHP. Koncem roku 2020 dosáhl vývojové verze 8. Už dnes má Laravel polovinu koláče a druhou polovinu si mezi sebe rozdělují všechny ostatní frameworky dohromady, jichž je asi 10-20 těch nejpoužívanějších. Laravel je jednoznačně nejlehčí na naučení, vzhledem k tomu jak je schopný. Jeho dokumentace je nad poměry skvělá, stejně tak počet videonávodů na yůtůbu. Jediné, co od něj odrazuje je instalace pomocí dependency manageru, která dělá na první pohled dojem, že jde o něco cizího a invazivního, co je vědou samo pro sebe. Na druhý pohled jde jen o pochopení maličkého principu Composeru a pak už zvládnete instalaci kdykoli a na jakémkoli počítači i v Linuxu. Po prolítnutí dokumentace a pár videí se vám bude zdát instalace pomocí Composeru, Valetu, Brew nebo jakéhokoli dependency manageru směšná, ve srovnání s tím, jak mocný kanón se vám s Laravelem dostal právě do ruky.
Situace kolem roku 2020
Když už dnes máme božský Laravel ve verzi 8 a k tomu mnoho špičkových integrovaných vývojových prostředí jako PhpStorm, Webuilder, DataGrip, Dreamweaver a Paint Shop Pro (moje kombinace) a umíme a chceme to pořádně umět, mělo by tedy být hračkou si engine webu naprogramovat sám. (O tom celá tato sekce webu).
Krom toho na internetu lze stáhnout asi třicet knih v PDF v angličtině na téma Creating own CMS with PHP/SQL. Dokonce už pomaličku začínají vycházet i podobně specializované knihy přímo pro Laravel (už ne jenom Up and running)...
Takže v současnosti máme historicky nejlepší šanci využít dokonalé a moderní codebase některého z Frameworků (skutečně nejdůmyslnější je Laravel) a vyždímat z ní to nejlepší, abychom se z plničů CMS stali programátorem a duchovním otcem našeho virtuálního strojového potomstva, což bude náš vlastní webový engine kdesi na serveru v internetu, který si už sám žije vlastním životem, tzn. sbírá data od uživatelů, dělá z nich různé statistiky, kreslí grafy, posílá je mailem, vyhodnocuje dotazníky a žebříčky našich nejlepších produktů. Ano, je to soustavné plnění ušlechtilého ideálu, ano, je to čistě duševní činnost a přitom přináší velké zadostiučinění, často neporovnatelné s uspokojováním mnohých nízkých potřeb…
.
.
Takže začátky jsou položeny…
Kam to až dospěje, záleží pouze na vašich dovednostech a vaší vůli…
.
.
.