Objekty a OOP KAPITOLA 3. První kroky s OOP. V této kapitole: První kroky s OOP. Rozšiřujeme třídy Šablony Soubory projektu

Podobné dokumenty
Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Django Urls, views, templates

Soubor index.html se nachází na stejné úrovni jako adresář obrazky. Měla bych použít relativní adresu, že? Hmm.

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

PHP tutoriál (základy PHP snadno a rychle)

Objektově orientované programování v jazyce Python

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Pokročilé schopnosti OOP


Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Objektově orientované programování v jazyce Python

Základy HTML. Autor: Palito

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

DUM 06 téma: Tvorba makra pomocí VBA

MODERNÍ WEB SNADNO A RYCHLE

1. Dědičnost a polymorfismus

8 Třídy, objekty, metody, předávání argumentů metod

Delphi - objektově orientované

Programování v jazyce JavaScript

Vstupní požadavky, doporučení a metodické pokyny

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Gymnázium Ostrava Hrabůvka, příspěvková organizace Františka Hajdy 34, Ostrava Hrabůvka

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Souhrn výukových materiálů ke kurzu: Tvorba výukových materiálů pomocí tabletu (B3.6)

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

MS SQL Server 2008 Management Studio Tutoriál

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

Název: VY_32_INOVACE_PG4119 Tipy a triky, rozdíly mezi prohlížeči

apilot - První kroky Publikační platforma apilot První kroky

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

JavaScript 101. "Trocha života do statických stránek"

Vývojové nástroje jazyka Java

================================================================================ =====

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Microsoft. Word. Hromadná korespondence. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Objektové programování

Programování v C++ 3, 3. cvičení

Používání u a Internetu

WNC::WebNucleatCreator

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Z. Kotala, P. Toman: Java ( Obsah )

NMIN201 Objektově orientované programování 1 / :36:09

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Nástrojová lišta v editačním poli

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Výčtový typ strana 67

Dynamicky vázané metody. Pozdní vazba, virtuální metody

MS Excel 2007 Kontingenční tabulky

APLIKACE XML PRO INTERNET

Anotace. Objekt self, Zapouzdření, polymorfismus,

Jak vytvořit nebo předělat vlastní motiv pro SunLight CMS

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy.

NPRG031 Programování II 1 / :25:46

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

PB161 Programování v jazyce C++ Přednáška 7

Kombinované úlohy - cvičení

Olga Rudikova 2. ročník APIN

Programování v jazyce JavaScript

PB161 Programování v jazyce C++ Přednáška 7

1 Tabulky Příklad 3 Access 2010

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Projekt Obrázek strana 135

Stručný úvod pro programátory. Michal Kuchta

Tvorba fotogalerie v HTML str.1

Magento se představuje

Chování konstruktorů a destruktorů při dědění

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Ukázka knihy z internetového knihkupectví

Redakční systém Joomla. Prokop Zelený

Instalace produktu Ontopia. ver (open-source verze)

z aplikace Access 2003

Formuláře. Téma 3.2. Řešený příklad č Zadání: V databázi formulare_a_sestavy.accdb vytvořte formulář pro tabulku student.

Word Lekce III. a IV.

Programujeme v softwaru Statistica

Microsoft Visio 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit.

Obsah. Úvodem 9. Kapitola 1 Než začneme 11. Kapitola 2 Dynamické zobrazování obsahu 25. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Multimediální prezentace MS PowerPoint I

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Úvodní příručka. Správa souborů Kliknutím na kartu Soubor můžete otevřít, uložit, vytisknout a spravovat své soubory Wordu.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

1. Programování proti rozhraní

CMSSS manuál k použití

dokumentu, respektive oddílu (více o oddílech v další kapitole). Nemůžeme

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Transkript:

Objekty a OOP KAPITOLA 3 V této kapitole: První kroky s OOP Rozšiřujeme třídy Šablony Soubory projektu V této knize budeme používat objektově orientované programování (zkráceně OOP). Jedná se o styl programování, v němž vytváříme objekty, které obsahují data i funkce, jež s těmito daty pracují. Protože objekty sdružují data a funkce na jediném místě, zachováváme uspořádanost zdrojového kódu a lépe zvládáme složitost, jak naše aplikace roste. Objekty vytváříme pomocí tříd. Vztah mezi třídami a objekty lze snadněji pochopit na příkladu stavaře. Stavitel (v tomto případě jazyk PHP) se řídí plánem (třídou), aby postavil dům (objekt). Stejně jako stavař může postavit více domů podle jediného plánu, jazyk PHP může vytvořit více instancí objektu. Každý z domů bude mít stejné dispozice, ale pravděpodobně bude jinak vymalovaný a bude v něm žít jiná rodina. V jazyce PHP má každý objekt vytvořený z jedné třídy stejnou funkčnost, ale vlastnosti a data, která přebývají v objektech, budou jedinečná pro každou instanci. OOP se může zdát na první pohled složité, ale jedná se o velmi jednoduchý styl programování. Více informací o OOP lze získat z videa Lorny Mitchellové na stránkách sitepoint.com. 18 První kroky s OOP Napišme krátký objektově orientovaný kód společně. Předpokládejme, že budeme chtít reprezentovat psa jako objekt v našem kódu jazyka PHP. Musíme napsat definici pro tento objekt (třídu) a v ní popíšeme, co může pes dělat. 18 http://www.sitepoint.com/object-oriented-php-lesson-1/ 47

KAPITOLA 3 Objekty a OOP Vytvořte nový soubor pes.php v adresáři muj_projekt a vložte do něho následující kód: class Pes { public $jmeno; public function construct($jmeno) { $this->jmeno = $jmeno; public function mluv() { return Haf! Haf! ; Nyní vytvořte v adresáři muj_projekt další soubor s názvem pes_test.php a s tímto obsahem: require pes.php ; $pes = new Pes( Fido ); echo Pes se jmenuje:. $pes->jmeno. <br /> ; echo Pes říká:. $pes->mluv(). <br /> ; Otevřete skript pes_test.php ve svém webovém prohlížeči a měli byste uvidět jméno psa, a také, jak tento pes štěká. Poznámka: Vkládání kódu z dalších souborů Příkaz require z výše uvedeného příkladu (jednoduše řečeno) importuje obsah externího souboru s kódem jazyka PHP do našeho souboru pes_test.php. Jedná se o jeden ze čtyř příkazů pro vkládání externího kódu, přičemž každý z nich se chová mírně odlišně: include vkládá obsah souboru. Pokud jazyk PHP nenajde tento soubor, nebo z něho nemůže číst, vypíše varování, ale pokračuje dále v provádění skriptu. include_once funguje podobně jako příkaz include, ale jazyk PHP si ověřuje, jestli už stejný soubor nenaimportoval. Jestliže ho už naimportoval, nevloží ho znovu. require téměř stejný jako příkaz include, ale zastaví provádění skriptu a vypíše fatální chybu, když nenajde požadovaný soubor. require_once podobá se příkazu require, ale navíc kontroluje, jestli už nevkládá stejný soubor podruhé. Když si prohlédnete soubor pes.php, na první pohled si všimnete klíčového slova class. Toto klíčové slovo říká, že za ním následuje kód pro definici třídy, která bude známá pod názvem, jenž bezprostředně následuje za tímto klíčovým slovem (v tomto případě se jedná o název Pes). Jakmile definujete tuto třídu, můžete z ní vytvořit objekt pomocí konstrukce new Pes. 48

První kroky s OOP Metody construct() a mluv() jsou součástí definice naší třídy. Metoda construct() má pro jazyk PHP zvláštní význam když vytváříme nový objekt z třídy, jazyk PHP v ní zkouší hledat právě tuto metodu. Pokud ji najde, automaticky ji spustí hned poté, co vytvoří instanci nového objektu. Tato metoda je rovněž známá pod pojmem konstruktor. Jedná se o skvělé místo, kam umístit kód pro inicializaci nového objektu. Poznámka: Funkce a metody Funkce náležící třídě se nazývají metody. Mezi funkcemi a metodami je jen minimální rozdíl, takže je v pořádku, když si představíte funkci pokaždé, když uvidíte slovo metoda, pokud vám to pomůže ke snadnějšímu pochopení. Třída může mít svou vlastní sadu proměnných, které pomáhají objektu udržet si stav, a její metody k nim můžou přistupovat. Na řádku public $jmeno; našeho souboru pes.php definujeme $jmeno jako proměnnou třídy (jinak řečeno vlastnost). Poznámka: Proměnné a vlastnosti Proměnné, které náleží třídě, bývají označovány jako vlastnosti. Podobně jako u funkcí a metod pokud se lépe sžijete s terminologií OOP tak, že si představíte proměnnou, kdykoli uvidíte slovo vlastnost, směle do toho. Když píšeme kód uvnitř třídy, můžeme používat speciální proměnnou $this, která představuje aktuální instanci třídy (objekt) a pomáhá nám správně přistupovat k metodám a vlastnostem. Pro ukázku zkusme upravit soubor pes_test.php, aby vypadal takto: require pes.php ; $fido = new Pes( Fido ); echo Pes se jmenuje:. $fido->jmeno. <br /> ; echo Pes říká:. $fido->mluv(). <br /> ; $fifinka = new Pes( Fifinka ); echo Pes se jmenuje:. $fifinka->jmeno. <br /> ; echo Pes říká:. $fifinka->mluv(). <br /> ; Přejmenovali jsme proměnnou $pes na $fido a vytvořili jsme druhou instanci třídy Pes, kterou jsme uložili do proměnné $fifinka. Po spuštění tohoto kódu by se měli na obrazovce objevit dva štěkající psi Fido a Fifinka. Co se ale odehrává na pozadí? Oba tyto objekty pocházejí ze stejné třídy (Pes), ale každý z nich reprezentuje samostatnou instanci s vlastními daty například každý z nich má svou vlastnost $jmeno. Při vytváření instance $fido ukládáme do proměnné $jmeno textový řetězec Fido, kdežto u instance $fifinka do ní ukládáme textový řetězec Fifinka. 49

KAPITOLA 3 Objekty a OOP Tip: Hlídejte si šipky Když voláte metodu nebo přistupujete k vlastnosti, nezapomeňte na operátor ->. Tím dáváte jazyku PHP najevo, že se odkazujete na něco, co patří třídě/objektu, a ne na běžnou proměnnou nebo funkci. Proto na to nezapomínejte při volání metod a přístupu k vlastnostem, jinak se můžou vaše skripty začít chovat neočekávaně. Rozšiřujeme třídy Nyní známe základy OOP, takže si je stručně zopakujme. Třída je definice, která seskupuje proměnné a funkce do logického celku. Konkrétní instanci, kterou vytváříme na základě třídy, nazýváme objekt. OOP samozřejmě nepojednává jen o objektech a třídách. Dalším důležitým aspektem je schopnost rozšiřovat třídu, abychom do ní mohli přidávat funkčnost (nebo ji zlepšovat), aniž bychom museli znovu programovat funkce, které se nemění. Tato koncepce se nazývá dědičnost tvorba nové třídy tak, že rozšiřujeme stávající třídu. Vytvořme nový soubor mazlicek.php s definicí třídy Mazlicek. Ta bude sloužit jako základní třída, kterou budeme rozšiřovat dalším třídami pro konkrétní mazlíčky například psa, kočku, rybu, ještěrku atd. class Mazlicek { public $jmeno; public function construct($jmeno) { $this->jmeno = $jmeno; public function mluv() { return nic ; Tato třída se záměrně podobá naší třídě Pes, takže by na ní nemělo být nic překvapujícího. Přepišme ale třídu Pes, aby rozšiřovala třídu Mazlicek a používala její funkčnost. require_once mazlicek.php ; class Pes extends Mazlicek { public function mluv() { return Haf! Haf! ; 50

Rozšiřujeme třídy public function hraj() { return přines ; Nyní přidáme několik dalších zvířecích tříd. Například do nového souboru kocka.php: require_once mazlicek.php ; class Kocka extends Mazlicek { public function mluv() { return Mňau! ; public function hraj() { return chyť myš ; a potom do souboru ryba.php: require_once mazlicek.php ; class Ryba extends Mazlicek { Teď si je vyzkoušíme. Vytvoříme soubor mazlicek_test.php a vložíme do něho níže uvedený zdrojový kód: require pes.php ; require kocka.php ; require ryba.php ; $fido = new Pes( Fido ); echo Pes se jmenuje:. $fido->jmeno. <br /> ; echo Pes říká:. $fido->mluv(). <br /> ; echo Pes si hraje:. $fido->hraj(). <br /> ; $berta = new Kocka( Berta ); echo Kočka se jmenuje:. $berta->jmeno. <br /> ; echo Kočka říká:. $berta->mluv(). <br /> ; echo Kočka si hraje:. $berta->hraj(). <br /> ; 51

KAPITOLA 3 Objekty a OOP $nemo = new Ryba( Nemo ); echo Ryba se jmenuje:. $nemo->jmeno. <br /> ; echo Ryba říká:. $nemo->mluv(). <br /> ; Nyní to začíná být zajímavé. Zkuste vytvořit třídy pro papouška a ještěrku a následně vytvořte jejich instance v souboru mazlicek_test.php. S jejich pomocí zobrazte jejich jména a co tak přibližně můžou říkat. Když rozšiřujeme třídu, tak ve skutečnosti vytváříme novou třídu z jiné. Tímto způsobem vzniká vztah mezi rodičovskou a dceřinou třídou. Například bychom mohli prohlásit, že třída Pes je dceřinou třídou třídy Mazlicek a že třída Mazlicek je rodičovskou třídou pro třídu Pes. Když stavíme na již napsaném kódu, nemusíme psát stejný kód na různých místech díky tomu získáme lépe uspořádaný a efektivnější kód. Každá třída, která reprezentuje určitý typ mazlíčka, získává své metody a vlastnosti z rodičovské třídy Mazlicek. Vezměme si kupříkladu třídu Ryba, jež nemá žádný vlastní kód, ale veškeré chování zdědila od třídy Mazlicek. Na druhou stranu třídy Pes a Kocka rozšiřují třídu Mazlicek. Kromě toho přepisují metody speak() svými vlastními verzemi a doplňují vlastní funkčnost v podobě metody hraj(). Poznámka: A co klíčové slovo public? V třídách připojujeme k našim vlastnostem a metodám viditelnost. Když přidělujeme viditelnost, můžeme si vybrat některé ze tří klíčových slov: public, protected nebo private. Klíčové slovo public (veřejné) označuje vlastnosti a metody, k nimž lze přistupovat odkudkoli. Klíčové slovo protected (chráněné) mají vlastnosti a metody, ke kterým můžou přistupovat pouze metody ze stejného stromu tříd (ve smyslu stromu dědičnosti). Klíčové slovo private (soukromé) označuje metody a vlastnosti, ke kterým můžou přistupovat pouze metody ze stejné třídy. Více informací o viditelnosti uvnitř tříd je k dispozici v následujících článcích: http://php.net/manual/en/language.oop5.visibility.php http://aperiplus.sourceforge.net/visibility.php Právě jsme si popsali základy OOP v jazyce PHP. Přestože se tento styl programování může zdát na první pohled složitý, podobá se jízdě na kole jakmile se ho naučíme, už ho nezapomeneme. OOP usnadňuje tvorbu rozsáhlých aplikací a setkáte se s ním v téměř všech profesionálních programovacích jazycích. Pokud se ho naučíte používat v jazyce PHP, jednodušeji v budoucnu pochopíte jiné programovací jazyky, takže se jedná o skutečně užitečnou dovednost. Zbytek této knihy bude předpokládat, že rozumíte OOP a umíte používat třídy a objekty v jazyce PHP. Pokud se s ním chcete seznámit blíže, prohlédněte si některé z níže uvedených článků: http://programujte.com/clanek/2009113001-oop-v-php/ http://codular.com/introducing-php-classes http://www.php5-tutorial.com/classes/introduction/ 52

Šablony http://php.net/manual/en/keyword.extends.php http://jadendreamer.wordpress.com/2011/05/13/php-tutorial-learning-oop-class-basics-extending- -classes/ http://www.killerphp.com/tutorials/object-oriented-php/ http://www.techotopia.com/index.php/php_object_oriented_programming http://www.techflirt.com/tutorials/oop-in-php/index.html http://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762 Šablony V kapitole 1, Server, jsme si řekli, že do souborů PHP můžeme ukládat jak kód jazyka PHP, tak kód jazyka HTML. Díky tomu je jazyk PHP skvělou vstupní bránou do světa programování na straně serveru pro všechny kodéry ovládající jazyk HTML. U složitých aplikací je však kombinování kódu v jazycích HTML a PHP velmi nepřehledné. Větší vývojářské týmy mají navíc programátory specializující se na frontend (prezentaci) a backend (zpracování dat na serveru). Mixování obou těchto kódů je v takovém prostředí nežádoucí, protože jednotliví vývojáři si nechtějí navzájem zasahovat do kódu. Šablonování nám umožňuje oddělit prezentační logiku od zpracování dat. Existuje spousta vzorů podporujících OOP a šablonování, přičemž nejznámější je architektura MVC (Model- -View-Controller), která se objevuje také ve spoustě oblíbených frameworků, kterými jsou kupříkladu CakePHP, 19 Zend Framework 20 a CodeIgniter. 21 Architektura MVC rozděluje kód aplikace na různé oblasti zájmu. Tímto způsobem lépe uspořádává náš zdrojový kód. Existuje spousta šablonovacích systémů, ale jednoduše můžeme používat i soubor PHP, v němž převažuje kód jazyka HTML. Cílem fragmentů kódu jazyka PHP v takovém souboru je vypisovat jen obsahy proměnných. Proměnné obvykle nastavuje v nějakém jiném souboru, který obsahuje pouze kód jazyka PHP a vkládá tuto šablonu. Ukažme si příklad. Soubor šablony by vypadal takto: <!DOCTYPE html> <html> <head> <meta charset= UTF-8 /> <title> echo $nazevstranky;?></title> </head> <body> <ul> 19 http://cakephp.org/ 20 http://framework.zend.com/ 21 http://ellislab.com/codeigniter 53

KAPITOLA 3 Objekty a OOP foreach ($pole as $prvek) {?> <li> echo $prvek;?></li>?> </ul> </body> </html> Dále potřebujeme ještě skript PHP, ve kterém nastavíme proměnné a vložíme předchozí šablonu: $nazevstranky = Má ukázková šablona ; $pole = array( jedna, dvě, tři ); require cesta/k/šabloně.php ; Vložená šablona zdědí oblast platnosti od volajícího souboru, a tudíž má přístup k jeho proměnným, funkcím, třídám atd. Výhody tohoto způsobu šablonování jsou: Uplatníme ho jednoduše. Nepotřebujeme žádnou knihovnu pro zobrazování šablon, kterou bychom museli načítat do naší aplikace. Šablony stále můžou zpracovávat kód jazyka PHP. Můžeme v nich procházet pole, volat funkce atd. Tento přístup má ale také několik nevýhod: Vývojáři frontendu, kteří vytvářejí šablony, musejí znát jazyk PHP. Všichni, kdo budou pracovat s těmito šablonami, musejí znát jazyk PHP. Nejedná se o skutečné šablonování. Tyto šablony nejsou ve skutečnosti šablonami jsou to jen další soubory PHP, které rozvrhují data pro zobrazení. Jako alternativu můžeme zvolit šablonovací knihovny, které nabízejí vlastní syntaxi. Ty se velmi liší od šablon, které jsme si ukázali před chvílí, jelikož k tvorbě šablony nepoužíváme vůbec jazyk PHP. Místo něho používáme speciální syntaxi, jež je jedinečná pro každou z těchto knihoven a obvykle vypadá jako kombinace kódu a čistého textu. Když taková knihovna zobrazuje šablonu, nahrazuje své speciální výrazy daty, které reprezentují. Tento přístup k šablonování volí kupříkladu i oblíbený publikační systém Expression Engine, 22 v němž všechny šablony obsahují speciální bloky kódu pro zobrazení dat. <!DOCTYPE html> <html> <head> <meta charset= UTF-8 /> 22 http://ellislab.com/expressionengine 54

Soubory projektu <title>{% nazevstranky %</title> </head> <body> <ul> {% if pole as prvek % <li>{% prvek %</li> {% /if % </ul> </body> </html> Tato metoda šablonování má následující výhody: Není nutné se učit jazyk PHP. Vývojáři šablon si vystačí se seznamem speciálních bloků, s nimiž můžou načítat data z našich skriptů PHP, a proto se nemusejí učit jazyk PHP a jeho syntaxi. Šablonovací knihovna převádí tyto šablony na standardní soubory HTML. Tyto soubory si tedy mohou ponechat obvyklou příponu.html. Tento přístup má však také nevýhody: Neobejdeme se bez knihovny, která zobrazí šablony. Tuto knihovnu třetí strany musíme vložit do naší aplikace. Každá knihovna může mít svou vlastní syntaxi a funkčnost. To může mít vliv na to, že budeme muset data dodatečně zpracovávat, nebo může tato syntaxe kolidovat s naším osobním stylem zápisu kódu. Oba přístupy mají své výhody i nevýhody, proto bychom si měli vyzkoušet co nejvíce variant, abychom zjistili, co se bude hodit nejlépe pro naši aplikaci. Více informací o šablonování lze najít v těchto článcích: http://smarty.ronnieweb.net/co-je-smarty.php http://www.broculos.net/2008/03/how-to-make-simple-html-template-engine.html#.uwi4-4xhy8a http://coding.smashingmagazine.com/2011/10/17/getting-started-with-php-templating/ http://www.sitepoint.com/smarty-php-template-engine/ http://www.sitepoint.com/beyond-template-engine/ Soubory projektu Jelikož jsme si vysvětlili OOP a šablonování, je na čase zapojit tyto nové koncepce do naší blogovací aplikace, díky čemuž si vytvoříme základní framework pro naši aplikaci. Musíme přidat několik souborů: obrázek 3.1 ukazuje, jak by měl vypadat kořenový adresář, na obrázku 3.2 lze vidět obsah adresáře admin, 55

KAPITOLA 3 Objekty a OOP obrázek 3.3 ukazuje adresář spolecne, na obrázku 3.4 lze vidět obsah adresáře frontend. Obrázek 3.1. Kořenový adresář Obrázek 3.2. Adresář admin 56

Soubory projektu Obrázek 3.3. Adresář spolecne Obrázek 3.4. Adresář frontend 57