PHP je věda

Objektově orientované programování nejen v PHP

Slovo úvodem

Kdo jsou vlastně PHP programátoři a proč dělají tuto práci a nevěnují se nějakému noblesnějšímu programovacímu jazyku?

PHP programátoři jsou kreativci! Protože je PHP tak jednoduchý jazyk, jsou schopní udělat jakýkoliv produkt bez nějakých hlubších znalostí programování, všechno jde najít na internetu a potom slepit dohromady. A nejen kreativní, ale i úspěšní a samostatní. Který jiný technik se může pochlubit tím, že jeho proukt používá tisíce lidí a přitom tento produkt vytvořil zcela sám doma „na koleni“?

Problém v PHP programech je jednoduchý – naše programy jsou úspěšné. Lidé si naše programy doslova zamilují a nebo jsou na nich přímo závislí. Jakmile začne být náše webová stránka, hra, facebook aplikace nebo shop užitečný, nastává problém – začneme jej rozšiřovat o nové funkce a zde začíná zpravidla špageti kód. Ne, nemluvím zde o míchání SQL, HTML a PHP dohromady v jednom souboru, dokonce doufám, že většina čtenářů používá nějaký ten Framework. Pokud někdo nezná, tak rychle nastudovat nějaký ten framework – hello world musí každý zvládnout za několik málo hodin a to úsilí se vyplatí.

Ale ani velké kvalitní frameworky jako Symfony nebo ZendFramework nejsou klíčem k čistému kódu. Framework nám dává především vrstvu přístupu k datům (Model), elegantní formu mapování URL na spouštění metod (controller) a oddělení aplikačních dat od zobrazení (View). Pokud se podíváme na nějaký velký projekt, bývá zde velký problém v tom co se děje v controlleru a že v naše modely nekontrolovaně rostou.

Kód, který jednou v controlleru je, už nejde znovu použít a pokud kód má být znovu použitelný, použije se copypaste, nebo v lepším případě kód zkončí v nějaké nicneříkající helper třídě. Naproti tomu existuje názor, že znovupoužitelný kód patří do modelu, což s sebou taky přináší problémy. Když náš model (resp. Datový objekt) nekontrolovaně roste, je to taky problém, protože se tam objevuje spousta kódu, který tam nemá co dělat. Model View Controller je pouze špička ledovce ve vývoji kvalitního software pomocí PHP. V první řadě je potřeba si uvědomit, že slovo Model ve světě PHP je často zaměňován se slovem Datový model. Existuje spousta přístupů, kde tomu tak není a když se baví dva programátoři (např. Vývojář PHP a vývojář java) o modelech, vznikne klasický PHP – špateti kód.

Vývoj software je velmi široká oblast a pokud toužíme po tom, nedostat se, případně vymanit se z legacy hell (což je velmi příhodný název, protože pokud náš PHP program dosáhne učitých rozměrů, nelze to jinak než slovem peklo pojmenovat), je potřeba někde začít. V první řadě je potřeba mít správné IDE – osobně doporučuji český PHPStorm. Abychom toto IDE mohli správně využívat je další nezbytností GIT, případě jiný verzovací systém – neexistuje totiž nic lepšího než kód pravidelně kontrolovat na změny a pravidělně commitovat. Další věcí, které se musíme držet je správné objektové modelování – správné použití konstuktoru, správné využití viditelnosti tříd, definice vstupních a návratových typů metod – a to z důvodu, abychom mohli použít našeptávání a další možnosti kvalitního IDE.

Ano, jde o to, psát PHP jako Javu. S tím, jak správně psát obrovské programy v jazyce java se zabývá spousta publikací a tím pádem se dá definovat a používat zaběhnutý slovník na popsání nějakého programátorského problému. Málokdo se však zabývá s tím, jak správně psát správně velké programy v PHP – nezapomeňme že PHP je původně skriptovací jazyk a tím pádem i většina publikací ohledně PHP se zabývají tím jednoduchým „skriptovacím“ použitím. Pokud ale plánujete velký projekt – který třeba ani v krajním případě nemusí mít s webovými stránkami nic společného – tudíž nejaký užitek z MVC frameworku můžete zapomenout – je potřeba hledat inspiraci v javě. A má to své výhody – naučíte se myslet jako java programátoři a tím pádem se vám otevře cesta např. do světa programování mobilních aplikací.