PHP je věda

Objektově orientované programování nejen v PHP

View

View je programový kód pro uživatelské rozhranní aplikace, tedy ta část programu, kterou vidí návštěvník stránky v prohlížeči. Ve světě PHP je view zpravidla vyjádřen pomocí HTML šablon. Mapování dat na šablony provádí tzv. „Template Engine“ a tento předá šabloně tzv. template object, který obsahuje data potřebná pro danou webovou stránku, tyto data se „obléknou“ do šablony a webová stránka je poslána k prohlížeči. Pro View platí pravidlo, že v něm nesmí být obsažena žádná business logika, tedy veškeré výpočty, ukládání a čtení databázových dat musí proběhnout v Controlleru případně modelu.

Template Engine

Na výběr existuje velká řada template enginů. Template Engine poskytuje vlastní velmi omezený programovací jazyk a vývojáře tak směřuje k tomu, aby opravdu veškerou business logic vykonal o úroveň níže, což je samozřejmě správné. Tato mezivrstva s sebou však nese i potíže, jelikož šablony je nutné parsovat pomocí PHP a to může u rozsáhlých webových stránek vést k výkonostním problémům. Vyspělé template engines řeší i tento problém a cashují šablony přímo do PHP.

Template Engine používá vlastní programovací jazyk např. takto:

Hello {$name}, {$surname}, how are you?

Efekt je však stejný jakobychom v PHP napsali následující:

<?php
// template.php
?>
Hello <?=$name?> <?=$surname?>, how are you?
 
 

Vlastní template engine

Template engine musí především být schopen načíst šablonu a převést Template object do takového formátu, aby jej bylo možné v šabloně používat. Pro tento účel si dobrý programátor snadno pomůže jednoduchým include na načtení šablony a extract pro převedení asociativního pole na jednotlivé proměnné.

<?php
$templateObject = array("name" => "Jacob", "surname" => "Smith");
extract($templateObject);
include "template.php";
 
 

PHP tedy poskytuje nástroje pro přehledné šablonování a nutnost používání externího template enginu tu není. Pokud se templatuje pomocí PHP, má programátor výhodu v tom, že se nemusí učit nový programovací jazyk a získá tak kompletní kontrolu nad tím, co se v kódu děje. Možnost míchání PHP a html v jednom a tom samém souboru není jen na škodu, je potřeba si uvědomit, že toto může být i výhodou, když si programátor určí pravidla a tyto svědomitě dodržuje. Není přeci zas takový rozdíl v tom jestli použijeme zobáček nebo složenou závorku.

Výhodu template enginů bych viděl pouze tehdy, pokud by existoval pouze jeden standardizovaný template engine a ten by šel použít pro view ve více programovacích jazycích, které jsou s HTML schopny pracovat (javascript, php, java, atd...). Dokud tomu tak není, nevidím důvod k používání určitého template enginu.