Univerzita Pardubice Fakulta Elektrotechniky a Informatiky Využití Návrhových Vzorů Při Vývoji Webové Aplikace V PHP
Total Page:16
File Type:pdf, Size:1020Kb
Univerzita Pardubice Fakulta elektrotechniky a informatiky Využití návrhových vzorů při vývoji webové aplikace v PHP Bc. Richard Fíla Diplomová práce 2019 Prohlašuji: Tuto práci jsem vypracoval samostatně. Veškeré literární prameny a informace, které jsem v práci využil, jsou uvedeny v seznamu použité literatury. Byl jsem seznámen s tím, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorský zákon, zejména se skutečností, že Univerzita Pardubice má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle § 60 odst. 1 autorského zákona, a s tím, že pokud dojde k užití této práce mnou nebo bude poskytnuta licence o užití jinému subjektu, je Univerzita Pardubice oprávněna ode mne požadovat přiměřený příspěvek na úhradu nákladů, které na vytvoření díla vynaložila, a to podle okolností až do jejich skutečné výše. Beru na vědomí, že v souladu s § 47b zákona č. 111/1998 Sb. o vysokých školách a o změně a doplnění dalších zákonů (zákon o vysokých školách), ve znění pozdějších předpisů a směrnicí Univerzity Pardubice č. 9/2012, bude práce zveřejněna v Univerzitní knihovně a prostřednic- tvím Digitální knihovny Univerzity Pardubice. V Pardubicích dne 22. 8. 2019 Bc. Richard Fíla PODĚKOVÁNÍ Děkuji vedoucímu, panu Ing. Lukáši Čeganovi, Ph.D. za kvalitní vedení, cenné rady a čas, který mi věnoval při tvorbě této diplomové práce. Dále bych rád poděkoval své rodině, blízkým přá- telům a své ženě za podporu při studiu. ANOTACE V této diplomové práci je prezentována historie a současnost programovacího jazyka PHP. Dále jsou zde ukázány nejznámější PHP frameworky a mikro frameworky. Následně je v této diplo- mové práci obsaženo srovnání těchto frameworků jak mezi sebou, tak i mezi frameworky jiných programovacích jazyků. Další část se zabývá tématikou návrhových vzorů, týkajících se pře- vážně tvroby webových stránek. Na závěr této diplomové práce je popsán podrobný postup při tvorbě vlastního mikro frameworku. KLÍČOVÁ SLOVA Návrhové vzory, MVC, Front Controller, Event Dispatcher, Template View, PHP, framework, mikro framework TITLE Using Design Patterns to Develop a Web Application in PHP ANNOTATION This thesis deals with history and present of programming language PHP. Furthermore, it shows the most famous PHP frameworks and micro frameworks. Comparsion of these frameworks among themselves and between frameworks of other programming languages is included in the thesis. The next part deals with the theme of design patterns. These patterns are mainly related to website creation. At the end of this thesis is described detailed procedure for creating your own micro framework. KEYWORDS Design Patterns, MVC, Front Controller, Event Dispatcher, Template View, PHP, Framework, Micro Framework OBSAH Seznam obrázků ...................................................................................................................... 10 Seznam tabulek ....................................................................................................................... 12 Seznam zkratek ....................................................................................................................... 13 Úvod ......................................................................................................................................... 14 1 PHP .................................................................................................................................. 15 1.1 Charakteristika PHP .............................................................................................. 15 1.2 Historie .................................................................................................................. 15 1.3 PHP 7 .................................................................................................................... 16 1.4 PHP-FIG a PSR .................................................................................................... 17 1.4.1 PSR-1 a PSR-2 .............................................................................................. 19 1.4.2 PSR-3 ............................................................................................................ 20 1.4.3 PSR-4 ............................................................................................................ 20 1.4.4 PSR-14 .......................................................................................................... 21 2 PHP Frameworky ........................................................................................................... 23 2.1 Framework všeobecně .......................................................................................... 23 2.2 Composer .............................................................................................................. 23 2.3 Zend ...................................................................................................................... 24 2.4 Symfony ................................................................................................................ 26 2.5 Laravel .................................................................................................................. 28 2.6 Yii ......................................................................................................................... 29 2.7 Phalcon .................................................................................................................. 29 2.8 Nette ...................................................................................................................... 30 2.9 Srovnání webových frameworků .......................................................................... 30 2.10 Micro Frameworky ............................................................................................... 32 2.10.1 Slim ............................................................................................................... 33 2.10.2 Silex .............................................................................................................. 33 2.10.3 Lumen ........................................................................................................... 33 2.10.4 Flight ............................................................................................................. 34 2.10.5 Srovnání PHP Micro frameworků ................................................................ 34 2.11 Implementace návrhových vzorů ve frameworkách ............................................. 34 3 Návrhové vzory ............................................................................................................... 38 3.1 Návrhové vzory všeobecně ................................................................................... 38 3.2 Návrhové vzory pro webové aplikace .................................................................. 38 3.2.1 MVC ............................................................................................................. 39 3.2.2 Page Controller ............................................................................................. 41 3.2.3 Front Controller ............................................................................................ 41 3.2.4 Two step view ............................................................................................... 43 3.2.5 Template View .............................................................................................. 43 3.2.6 Singleton ....................................................................................................... 44 3.2.7 Adapter .......................................................................................................... 45 3.2.8 Decorator ...................................................................................................... 46 3.2.9 Composite ..................................................................................................... 48 3.2.10 Strategy ......................................................................................................... 48 3.2.11 Observer ........................................................................................................ 49 3.2.12 Builder .......................................................................................................... 51 3.2.13 Mediator ........................................................................................................ 51 3.2.14 Unit of Work ................................................................................................. 52 3.2.15 Dependency Injection ................................................................................... 54 4 MVC Micro Framework ................................................................................................ 56 4.1 Nástroje ................................................................................................................. 56 4.1.1 PhpStorm ...................................................................................................... 56 4.1.2 XAMPP ......................................................................................................... 56 4.1.3 GitHub .......................................................................................................... 57 4.2 Komponenty třetích stran ...................................................................................... 58 4.2.1 Pimple – Dependency Injection Container ................................................... 58 4.2.2