Architektura řešení BZ Company
Jedná se o třívrstvou MVC architekturu. Kód je minimalistický a celý systém obsahuje několik tříd.
MVC architektura je součástí populárních webových frameworků, jakými jsou např. Zend nebo Nette pro PHP, Ruby On Rail pro Ruby nebo MVC pro ASP .NET.
Princip
Základní myšlenkou naší architektury je oddělení logiky od výstupu. Řešíme tímto problém tzv. "špagetového kódu", kdy máme v jednom souboru (třídě) logické operace a zároveň renderování výstupu. Soubor obsahuje databázové dotazy, logiku (např. PHP operace) a HTML tagy. Náš zdrojový kód s logikou vypadá jako zdrojový kód (např. PHP) a výstup vypadá jako HTML stránka s co nejmenší příměsí dalšího kódu. Kód se tedy rozděluje do 2 souborů (HTML šablony a PHP skriptu), s použitím dalších tříd.
Komponenty
Celá aplikace je rozdělena na komponenty 3 typů:
o Modely,
o View (pohledy) a
o Controller (kontrolery).
Komponenty jsou třídy, které jsou odděděné z abstraktních předků, jen view je jen jako HTML šablona.
Model
Model obsahuje logiku a vše, co do ní spadá. Jsou to výpočty, databázové dotazy, validace a podobně. Model jsou data používaná programem. To může být databáze, soubor nebo jednoduchý objekt, například ikona. Jeho funkce spočívá v přijetí parametrů zvenku a vydání dat ven.
Programujeme bez tzv. ORM (objektově relačního mapování), jelikož PHP defaultně nic takového nemá a hotová řešení jsou zbytečně těžkopádná. Navíc PHP obsahuje skvělé datové struktury, které s dynamickým typováním nahradí vše potřebné. Využíváme principu manažerů, logika aplikace je rozdělena např. mezi manažery ManazerUzivatelu, ManazerClanku a další. Ty obsahují metody k výběru potřebných údajů z databáze nebo k jejich modifikaci. V manažeru najdete pomocné metody k práci s uživateli, např. ověření správné délky a znaků hesla.
Pohled
Pohled (View) je zobrazovač výstupu. Obsahuje minimální množství logiky, která je pro výpis nutná (např. kontrola, zda si uživatel vyplnil přezdívku před jejím vypsáním nebo cyklus s komentáři, které se vypisují). Jde o pHTML šablonu, obsahující HTML stránku a tagy, které umožňují do šablony vkládat proměnné, případně provádět iterace (cykly) a podmínky. Pohledů používáme mnoho, např. pro funkcionalitu s entitou uživatele. Například pohled uzivatel_profil je společný všem uživatelům a jsou do něj posílána různá data, vždy podle toho, koho zrovna zobrazujeme. Tato data jsou poté dosazena do HTML elementů šablony. Pohledy samozřejmě vkládáme do sebe (tvoříme šablony pro jednotlivé typy obsahů).
Kontroler
Kontroler je prvek, který osvětluje funkčnost celého systému. Je to prostředník, se kterým komunikuje uživatel, model i pohled. Drží tedy celý systém pohromadě a komponenty propojuje. Nejčastěji má každá entita jeden kontroler, máme tedy UzivatelKontroler, ClanekKontroler a další.