EN | CS | Přihlásit | Registrovat

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…


Login to submit a comment