Obsah
Adresářová struktura
Pomocí ‚Skeletonu‘ jsme velmi snadno získali adresářovou strukturu naší aplikace. Z čeho se tahleta adresářová struktura aplikace vlastně skládá? Trošku tu strukturu prozkoumáme, než se vrhneme o krok dál!
Hlavní části
Hlavní částí adresářové struktury naší aplikace jsou tři adresáře:
TodoList/
+--app/
| + ...
+--document_root/
| + ...
+--libs/
| + ...
+ ...
Pojďme se letmo podívat k čemu vlastně slouží…
Pro úplný a detailní popis adresářové struktury a systému modulů Nette Frameworku viz. Doporučená adresářová struktura a Jak na moduly.
Adresář app/
TodoList/
+--app/
| +--presenters/
| +--models/
| +--templates/
| +--temp/
| +--bootstrap.php
| +--config.ini
| + ...
+ ...
Adresář app/ je místem, kde se nachází vlastní
aplikační logika vaší aplikace. Každá její část má
v adresáři app/ své místo, a tedy svůj podadresář.
Nejdůležitější z nich jsou:
Existence tohoto adresáře mimochodem představuje jednu z best practice vývoje webových aplikací – z bezpečnostních důvodů jsou skripty aplikační logiky umístěny v odděleném adresáři, který je nedostupný z prohlížeče.
Adresář presenters/
Jak už název napovídá, v tomto adresáři budou uloženy jednotlivé Presentery (Controlery) z naší aplikace. K tomu, co to přesně ten Presenter je se dostaneme později.
Adresář models/
V tomto adresáři budou uloženy jednotlivé Modely naší aplikace. A stejně jako v předchozím případě si i o nich povíme až za chvíli.
Adresář templates/
Třetí adresář bude obsahovat jednotlivé šablony, nebo také „pohledy“, které naše aplikace bude používat. Tady budou ty kousky HTML, ze kterých se to celé bude skládat. Pokud máte v týmu kodéra, tak tohleto je adresář, do kterého bude „lozit“.
Adresář temp/
Na adresáři temp/ je nejlepší to, že se o něj vůbec
nemusíme starat :-) – tam si naše aplikace bude ukládat různá dočasná
data (keš, atd.). Jediné co ke správnému chodu naší aplikace musíme
udělat je tomuto adresáři nastavit práva k zápisu tak, aby tam naše
aplikace mohla zapisovat (i vytvářet podadresáře).
Kromě 4 výše uvedených adresářů nás z adresáře app/
v tuto chvíli budou zajímat ještě 2 soubory – bootstrap.php a config.ini.
Soubor bootstrap.php
Jedná se o zaváděcí soubor celé aplikace. A ten, který jsme získali díky skeletonu je naplněn tímto obsahem:
<?php
// Step 1: Load Nette Framework
// this allows load Nette Framework classes automatically so that
// you don't have to litter your code with 'require' statements
require LIBS_DIR . '/Nette/loader.php';
// Step 2: Configure environment
// 2a) enable Nette\Debug for better exception and error visualisation
Debug::enable();
// 2b) load configuration from config.ini file
Environment::loadConfig();
// Step 3: Configure application
// 3a) get and setup a front controller
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
//$application->catchExceptions = TRUE;
// Step 4: Setup application router
$router = $application->getRouter();
$router[] = new Route('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
// Step 5: Run the application!
$application->run();
Zaváděcí soubor bootstrap.php má za úkol nastavit
prostředí aplikace a spustit ji. Jak vidíte, tato činnost se skládá
z pěti kroků – tak jednoduché to je.
Detailní zkoumání tohoto souboru si necháme na jindy, pro tuto chvíli
nám stačí vědět, že v kroku 2a) dojde k zapnutí debuggeru, který nám bude užitečným
pomocníkem při dalším programování, a že v kroku 4 dojde
k aktivování něčeho, čemu se říká routování a co nám
zajistí, že naše aplikace bude mít hezké URL, za chvilku se o routování
ještě zmíníme.
Soubor config.ini
Posledním souborem, který nás v adresáři /app bude
zajímat, je soubor config.ini. V tomto souboru je uložena
konfigurace naší aplikace.
Jeho obsah teď nijak zkoumat nebudeme, vrátíme se k němu za chvíli, až budeme naši aplikaci propojovat s databází.
Adresář document_root
TodoList/
+ ...
+--document_root/
| +--css/
| +--js/
| +--index.php
| + ...
+ ...
Adresář document_root je veřejně dostupným adresářem
naší aplikace, zde budou uloženy obrázky, soubory CSS (kaskádových stylů)
a javascriptové skripty – pro tyto účely jsou zde připraveny adresáře
css a js.
Kromě toho se tady nachází soubor index.php.
Adresář document_root by měl být přímo
dostupný z vašeho webového serveru.
Do tohoto adresáře byste neměli ukládat žádné .php
soubory kromě index.php, neboť je viditelný přímo z webového
prohlížeče.
Soubor index.php
Všechny požadavky na naši webovou aplikaci budou směřované do souboru
TodoList/document_root/index.php. Pokud patříte mezi zkušené
programátory, nejspíš víte, že teď by mělo přijít na řadu
nastavování pravidel mod_rewrite. Nette je však výjimečné
tím, že dovolí odložit úvahy nad podobou URL až na později. Třeba
až na okamžik, kdy bude celý projekt hotový. Volba tvaru URL pro celou
aplikaci pak bude otázkou jen drobného zásahu na jednom místě.
Když si zobrazíme obsah souboru index.php tak, jak nám jej
připravil Skeleton, měli bychom vidět toto:
<?php
// absolute filesystem path to the web root
define('WWW_DIR', dirname(__FILE__));
// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/../app');
// absolute filesystem path to the libraries
define('LIBS_DIR', WWW_DIR . '/../libs');
// load bootstrap file
require APP_DIR . '/bootstrap.php';
V tomto souboru jsou definovány tři konstanty a poté je načten již výše zmíněný bootstrap.php, který pro nás nabootuje a spustí naši aplikaci.
Definice uvedených konstant opět není požadavkem Nette Frameworku, jde pouze o užitečnou zvyklost. Když se totiž složka s aplikací nebo knihovnami přesune, bude stačit změnit jednu cestu v tomto souboru.
Adresář libs
TodoList/
+ ...
+--libs/
| +--Nette/
| +--dibi/
+ ...
S tímto adresářem jsme se již trochu seznámili v předchozí části, kdy jsme Nette Framework instalovali.
Sem patří různé frameworky a další knihovny, díky který naše aplikace funguje a které vyžaduje ke své činnosti.
Co bychom si měli zapamatovat?
- Nette Framework nabízí k použití doporučenou adresářovou strukturu – tato adresářová struktura není povinná – Nette Framework vám ji nenutí
- Adresářová struktura slouží k lepší organizaci zdrojových kódů aplikace
- K souborům vlastní aplikace (její aplikační logiky) by nemělo být možné přistoupit přímo z prohlížeče
- Stručný popis adresářové struktury najdete výše na této stránce, detailní pak v Příručce programátora
No, a to je všechno – tak vidíte, že to ani nakonec nebylo tak těžké. Když už jsme se seznámili s adresářovou strukturou naší aplikace, je čas se vrhnout na databázi…



