PHP je věda

Objektově orientované programování nejen v PHP

Model View Controller

MVC je pro PHP programátory zaběhnutý pojem. Zajímavá je však historie tohoto návrhového vzoru. Eric Freeman & Elisabeth Freeman se ve své knize „Head First Design Patterns“ se o tomto návrhovém vzoru zmiňují jako o „Patterns of Patterns“. To byl pro mě docela šok, přečetl jsem celou knihu protože jsem hledal alternativu k MVC a nakonec se dozvím, že MVC je nejlepší? Po přečtení dalších knih a různém zkoušení možností jak programovat jsem dospěl ke stejnému názoru. MVC je nejlepší, zároveň je však MVC něco jiného, než si většina PHP programátorů myslí.

Zajímavé je, že tento návrhový vzor vznikl již mnohem dříve než se o něm začalo mluvit ve světě PHP. S tímto návrhovým vzorem jsem se setkal při vývoji iOS aplikací a tam je chápán trochu odlišně.

Zásadní princip MVC je ten, že controller má pouze kontrolovat to co se děje ve view (např. Když člověk požádá o webovou stránku na určitém url, zobrazí mu webovou stránku). View je naše uživatelské rozhraní (zpravidla tedy html šablona) a v modelu se skrývají data pro view. Na Controlleru tedy je správně naplnit model, aby tento model mohl view prezentovat.

Běžně je ve světě PHP spousta business logic v controlleru, případně smíchaná logika a data v modelu. Programy jako takové jsou napsány správně, ale pokud projekt začne růst, nastane problém. MVC bohužel nedefinuje jak psát kód, definuje pouze komunikaci s uživatelským rozhranním. Pokud chceme psát programy pomocí MVC – protože se to prokázalo jako vhodný návrhový vzor, ale hledáme řešení pro čístý kód, je potřeba nejprve pochopit, co nám MVC vlastně definuje a jaké možnosti nám nechává otevřené.

Další podkaptioly:

Controller
Mapování URL na kód
Koordinace business logiky
Komunikace s uživatelským rozhraním
Real time komunikace a PHP – Long polling
Model
Template objekt
View