ZÁPADOČESKÁ UNIVERZITA V PLZNI Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky ------------------------------------------------------------------------------------------- Autor: Antonín Neumann Studijní číslo: A14N0139P E-mail: neumann@students.zcu.cz Akademický rok: 2015/2016 ------------------------------------------------------------------------------------------- KIV/WEB Webové stránky konferenčního systému (stránky běží na localhost) # Použité technologie * PHP ** MVC architektura ** OOP * LESS - CSS preprocesor * Javascript * Bower, Composer * Dibi, Tracy * jQuery, Bootstrap # Adresářová struktura Uvedu zde jen hlavní body adresářové struktury celého projektu: -- _doc/ => adresář s dokumentací -- _db/ => SQL skripty pro vytvoření databáze a vložení testovacích dat -- assets/ => frontendové soubory -- css/ -- error/ -- img/ -- js/ -- less/ -- template/ => šablony webu -- core/ => jádro aplikace -- config/ => nastavení aplikace -- exception/ => vlastní vyjímky -- lib/ => různé pomocné knihovny -- ABaseController.php -- ARenderController.php -- loader.php -- requestParser.php -- router.php -- modules/ => jednotlivé moduly -- acl/ => modul pro s uživatelskými oprávněními -- page/ => modul pro stránky -- config/ -- controller/ -- helper/ -- model -- view/ -- PageModule.php -- .htaccess -- bower.json -- composer.json -- index.php => startovní bod aplikace # Architektura aplikace Aplikace je založena na návrhovém vzoru MVC a je mírně vylepšena o možnost použití filterů a helperů. Celá apliace je napsaná v PHP s použít objektového programování a jmenných prostorů. Celý systém byl vytvořen v rámci předmetů KIV/WEB a oborového projektu s plánovaných přesahem na jeho využití při tvorbě dalších webových stránek/aplikací. ## Konfigurace Konfigurace aplikace se provádí v souborech umístěných ve složce /core/config/ případně určitá lokální nastavení lze provést prímo v modulu ve složce config/. Každý modul se musí nakonfigurovat v souboru /core/config/modules.php kde se uvedou nějaké základní proměnné modulu, například URL, namespace a cesta. V případě použití filtrů, je nutné tyto registrovat v souboru /core/config/filters.php ## Modul Celá aplikace může být rozdělená do několika modulů, kde každý modul může obstarávat nějakou funkcionalitu. Modul je základní stavební blok aplikace, který je založen na návrhovém vzoru MVC. Každdý modul ve s samostatném adresáři. Základní nastavení modulu se provádí v souboru /core/config/modules.php. Základním souborem každého modulu je NAMEModule.php, který dědí od základního controlleru a stává se předkem všech dalších controllerů tohoto modulu. Může dědit buď od ABaseControlleru nebo ARenderControlleru, podle toho jestli má být výstupem tohoto modulu vykreslování stránek. ## Controllery Controller řídí obsluhu požadavků, jejich zpracování inicializaci modelu, helperu a také kompozici a vykreslení view s předáním všech potřebných vstupních dat. ## Modely Model je vrstva komunikující s databází. ## Views Jako šablony jsou využívání jen prostá kombinace HTML a PHP, ale nic nebrání možnosti integrovat a používat jiné šablonovací systémy jako je například Smarty, Nette\Latte nebo Twig. Šablonovací systém je založený na hiearchii, kdy na prvním místě stojí template.tpl, který určuje hlavní (zejména neviditelné) prvky stránky jako například obsah a import CSS a Javascriptových souborů. Další je soubor layout.tpl, který může být v aplikaci několik (typicky 1-2) a určují základní vizuální rozvržení webové stránky. A posledním jsou soubory jednotlivých view v podsložce každého modulu, které se načítají v controllerech na základě URL nebo nějaké akce. ## Filtry Filtry jsou spouštěny vždy před vstupem requestu do controlleru. A můžou s ním provádět různé modifikace, případně mohou sloužit pro kontrolu například jestli je uživatel přihlášen, atp. Každý filtr je nutné registrovat v souboru /core/config/filters.php a nakonci své činnosti musí zavolat metodu next(), která předá data dalšímu registrovanému filtru. V opačné případě, dojde k ukončení činnosti všech dalších filtrů a může dojít k chybě nebo neočekávanému chování celé apliace. Dále každý filter dědí o základního /core/ABaseFilteru.php. ## Helpers Helper je třída, která přidává do šablon (view) další funkcionalitu, abychom v samotnách view nemuseli vytvářet žádné funkce. Může například vypisovat chybové hlášky, případně transformovat data do požadované podoby, atp. ## Zpracování requestu Request nejprve projde fází zpracování, která se děje v souboru /core/requestParser.php. Ten převede URL do příslušných proměnných (případně nastaví implicitní hodnoty těchto proměnných). Další částí zpracovnání requestu je soubor /core/router.php, který nejdříve spustí filtery a po jejich skončení se pokusí nalézt přislušný modul, controller a metodu, které následně předá parametry požadavku k dalšímu zpracování. Všechny třídy jsou načítání automaticky pomocí vlastních statických metod registrovaných pomocí funkce spl_autoload_register(). Loader se nachází v souboru /core/loader.php. # Použité externí knihovny ## Dibi Dibi je databázový layer, v aplikaci je použitý pro veškerou komunikaci modelů s databází MySQL. Použit je zejména proto, že jsem na něj zviklý, stejně dobře by šlo použít například PDO. ## Bootstrap Bootstrap je frontendový framework, jedná se o sadu CSS pravidel, které usnadňují budování vizuálního vzhledu webové stránky. ## Composer Composer je PHP správce závislostí, který usnadňuje používání a správu externích knihoven a komponent. ## Bower, NodeJS Bower je frontendový správce balíčků běžící nad NodeJS, funčnost je obdobná jako u nástroje Composer. ## Další nástroje Pro správu verzí je použitý Git repositář na Github.com. Jako zdroj většiny textů je použitá www.wikipedia.cz a nebo generátor textů www.lipsum.cz