Základní uspořádání a výchozí adresářová struktura

Výchozí balíček, který si můžete stáhnout zde, má určitou strukturu a uspořádání, které si zde představíme a které se následně prolíná celou dokumentací. Řekneme si kde co je a proč to tak je.

Je nutné poznamenat, že tato předdefinovaná struktura není pevná. Ano, je to struktura ke které jsem postupně došel jako k optimální, ale není pevně dána a mám i své projekty, kde je struktura jiná (jednoúčelové vysoce specializované aplikace). Ostatně vše si můžete nastavit jak potřebujete a když jste si jistý, že pro určitou situaci je vhodnější jiné řešení, tak tuto možnost využijte a strukturu si upravte. Ovšem pro účel vysvětlení jak Jet funguje je třeba jeden pevný bod (tak říkajíc) a tím je tato výchozí struktura. A teď už k věci ...

Základní rozlišení

Než se pustíme do jednotlivých adresářů a podadresářů, řekněme si něco k obecným principům, které platí pro celou strukturu.

Adresáře se znakem _ na začátku

To jsou adresáře obsahující například instalátor a vývojářské nástroje (zejména Jet Studio) - tedy pomocné nástroje nesouvisející s reálným provozem aplikace. Adresáře jsou takto odlišené, protože na produkčním serveru nemají co dělat. To je hlavním smyslem toho znaku _. Ukázat co nemáte nahrávat na server ze kterého běží produkční instance vaší aplikace. A když už to tam na chvíli potřebujete, tak to tam nenechávejte trvale. Tedy znak _ rovná se interní / dočasná věc.

Adresáře s velkým písmenem na začátku

To jsou adresáře, kde najdete nějaké třídy (teoreticky i funkce). Jednoduše řečeno nějakou aplikační logiku, část logiky, komponentu aplikace.

Adresáře s malým písmenem na začátku

Malé písmeno znamená: zde nehledej třídy. Zde najdete hlavně data, nebo view skripty. Jaká data? Například konfigurační soubory, slovníky pro překladač, stavová data aplikace, keš a tak dále.

Soubory *.php vs *.phtml

Jedná se o základní rozlišení view skripty (tedy skriptu generujícího výstup) a skriptu obsahujícího nějakou aplikační logiku.

Popis výchozí adresářové struktury

Nyní si projdeme jednotlivé adresáře, ovšem ty nejdůležitější schválně nechám na konec.

~/_installer

Pokud jste si již ukázkovou aplikaci balíku Jet nainstalovali, tak zde je instalátor, který vás instalací provedl. Je to samostatná mini aplikace. Má být přítomna pouze pro instalaci a následně má být vámi odstraněna.

Instalátor může soužit jako základ pro váš vlastní instalátor. Chcete na Jetu postavit třeba své CMS? Fajn, může mít i instalátor a zde je základ.

Kromě toho, jak jsem již zmínil, je to samostatná mini aplikace, která je ovšem sama o sobě na Jet postavená a slouží zároveň jako ukázka jednoho z přístupů a strategie tvorby online aplikací.

~/_profiler

Profiler je samostatné téma. Tedy více viz příslušné kapitoly. Ale pro pořádek je to mini aplikace, která vám pomůže s laděním výkonu vašeho projektu. Protože má znak _ na začátku, tak je určena jen a pouze pro vás, vývojáře, a na produkčním prostředí nemá co dělat (určitě ne trvale).

~/_playground

Jednoduché skripty určené pro rychlé otestování PHP Jet s pomocí zabudovaného web serveru PHP. Z logiky věci samozřejmě nemá tento adresář na produkční prostředí co dělat.

~/_tools

V tomto adresáři najdete pomocné nástroje určené pro vás, které vám pomůžou s vývojem.

~/_tools/cli

Pár pomocných nástrojů použitelných z textového prostředí (nebo příkazového řádku, chcete-li).

~/_tools/studio

Další mini aplikace (i když ta už není moc mini) a nástroj, který mě osobně hodně usnadňuje život: Jet Studio. Zde si prostě všemožné naklikáte. Je to velké téma a nejlepší je si to prostě vyzkoušet.

Jet Studio je online aplikace a tedy dostanete se k ní přes URL. Odkaz je na domovské stránce ukázkové aplikaci.

A mimochodem je to ukázka další možné strategie tvorby online aplikace...

~/cache

Adresář určení pro odkládání dat keše pokud backend keše používá soubory (a ne třeba něco jako Redis). Adresář je využíván Jetem a samozřejmě plně využitelný vaší aplikací.

~/logs

Různé logy. Například na toto místo ukládá ErrorHandler záznamy o chybách.

~/tmp

Zde asi není co vysvětlovat ... :-)

~/css, ~/js a ~/images

K čemu jsou předurčené tyto adresáře je zřejmé z jejich názvů. Důležité je, že jsou to přímo přístupné adresáře přes URL (ještě spolu s ~/_tools/studio/). Veškerý ostatní provoz (http požadavky) je směrován na boostrap aplikace.

Pokud potřebujete další takové adresáře (napadá mě třeba ~/files/, ~/pdf/ a podobně), klidně si je vytvořte.

Předpokládám, že si umíte patřičně upravit .htacces pro váš Apache, nebo konfiguraci NGinx (či jiného serveru). Tedy toto téma zde nebudu rozebírat (a případně tak dublovat dokumentaci příslušných webserverů).

~/library

Jak název napovídá, tak tento adresář je určený pro knihovny.

Zde v adresáři ~/library/Jet naleznete Jet samotný.

Ovšem adresář je určen i pro další knihovny v projektu použité - nejen pro Jet.

V praxi se mi osvědčilo takto separovat vše (především knihovny třetích stran), kam ani já ani kolegové nemáme sahat. Rozhodně ne bez koordinace a rozmyslu a zvážení (a otestování) důsledků. Tedy je jasně separováno co je naše aplikace a co komponenta, která by vlastně měla být nedotknutelná.

~/application

Hurá! Konečně jsme u toho nejdůležitějšího adresáře. Toto je to, čemu říkám aplikační prostor a je to právě to místo, kde je naše hlavní "hřiště". Zde se ukrývá celá aplikace a vše co s ní souvisí. Pojďme si to tedy rozebrat.

~/application/bases

Adresář určení pro jednotlivé báze MVC.

Co že to je? Na to je třeba nastudovat jak v Jet funguje MVC. Ve své podstatě je to jednoduché, ale jednou větou se to říct nedá, ovšem zkusím to: Zde jsou uložené definice jednotlivých částí projektu (např. administrace, REST API a také té veřejně viditelné části ať je to web, e-shop, nebo cokoliv jiného) a jednotlivých stránek.

Tedy například definice toho co se má stát na URL https://muj-web/o-nas/ je právě zde.

Napadlo vás slovo "routování"? Ano, dá se to tak říct. Ale zdaleka to není jen pouhé routování. Vše se dozvíte později.

Krom definic jsou v tomto adresáři i základní view a layouty. Pokud se vám zdá, že to nemá logiku, tak vězte že má. Uvidíte :-)

~/application/config

Zde je řada konfiguračních souborů a konfiguračních skriptů. Více o tématu najdete zde

~/application/data

V tomto adresáři jsou uložená interní data aplikace. Tedy data, která aplikace potřebuje, ale nesmí k nim být přístup z venčí.

Například se jedná o seznam nainstalovaných a aktivních modulů a tak dále.

Adresář je určen jak pro Jet, tak pro libovolné využití vaší aplikací.

~/application/dictionaries

Jak název napovídá, tak zde jsou uložené slovníky překladače.

~/application/menus

Zde jsou definice různých meníček. Opět více info v samostatném tématu. Ale stručně řečeno zde najdete definici kořenových menu administrace vaší aplikace a spousty dalších - jak budete potřebovat.

~/application/Autoloaders

A hele ... Velké písmeno na začátku, tedy tam budou schované nějaké třídy :-). A je to tak.

V tomto adresáři jsou jednotlivé Loadery, tedy moduly Autoloaderu.

~/application/Init

Zde jsou inicializace jednotlivých subsystémů.

Chcete vědět (a hlavně ovlivnit) jak se "nahazuje" například AutoLoader? Najdete to právě zde v inicializačním skriptu ~/application/Init/Autoloader.php.

Podrobné vysvětlení ke každé inicializaci najdete vždy u popisu příslušné části systému, tedy zde nebudu uvádět soupis a popis všeho co v inicializaci je.

Důležité je vědět, že "nahazování" něčeho máte hledat právě zde.

~/application/ErrorHandlers

ErrorHandler má své moduly v toto adresáři ErrorHandlers.

Tedy adresář je určen pro moduly, které provádí finální operaci s chybami aplikace. To znamená jejich zobrazení, logování a podobně.

~/application/Classes

Zde jsou vaše třídy - třídy vaší aplikace.

Jak se dozvíte, tak Jet je modulární. Umožňuje aplikaci rozdělit do modulů a já tento přístup pro většinu projektů vřele doporučuji.

Ale i modulární aplikace má své obecné třídy. Příklad? Takovou obecnou třídou může být například třída předtavující článek. A s článkem pak pracuje jeden modul určený pro administraci, další modul článeky zobrazuje na webu a další představuje REST API. Ale stále tyto moduly pracují s jednou entitou představující článek (nebo zboží, prostě cokoliv vás napadne).

A právě pro takové obecné třídy je určen tento adresář - vlastně jeden z nejdůležitějších adresářů.

~/application/Modules

Vedle adresáře Classes nejdůležitější adresář a také jádro vaší aplikace.

Dle názvu je jasné, že zde najdete moduly. A k tomu již opravdu nedokážu nic stručně napsat a musím odkázat na příslušné kapitoly.

~/application/bootstrap.php

Tento skript je vstupní bod aplikace. Právě na něj je nasměrovaný veškerý provoz pomocí .htaccess (či jiných nastavení - dle vašeho web serveru).

Zavolá konfiguraci, inicializaci a následně spustí sekvenci zpracování MVC.

Předchozí kapitola
Poděkování
Další kapitola
Konfigurace