Přiznejme si to hned na úvod: Každý programátor v PHP si napsal vlastní framework, a kdo říká že ne, tak si ho píše dodneška! Přijít s novým frameworkem je na úrovni přinesení nové sovy do Athén a šance, že mu někdo bude věnovat pozornost, se limitně blíží nule. Nový framework musí být opravdu výjimečně užitečný nebo extravagantně neobvyklý, aby si ho někdo všiml. Limonade rozhodně splňuje předpoklad neobvyklosti: Skládá se ze sedmi souborů o celkové velikosti 68 kB (včetně komentářů v kódu. Bez nich je to pouhých 38 kB!).
Limonade je mikroframework inspirovaný frameworky typu Orbit v jazyce Lua či Sinatra nebo Camping v jazyce Ruby. Na rozdíl od velkých frameworků, jako je známý Zend Framework, nenabízí desítky objektových knihoven pro všechny možné operace. Neřeší připojení k databázi, neřeší správu session, přihlašování uživatelů ani například cachování dat. Dokonce není ani objektový. Přesto nabízí poměrně zajímavé funkce. Posuďte sami:
Routování
Každý PHP framework by měl umět rozebrat požadavek uživatele a podle něj provést určité akce. Limonade samo sebou tuto funkčnost nabízí, a to poměrně silnou. V základní podobě vypadá například takto:
dispatch('/', 'moje_get_funkce');
function moje_get_funkce()
{
// Něco udělej
}
Volání dispatch()
je zkrácený alias pro volání funkce dispatch_get()
, tedy je jasné, co výše zmíněný kód udělá: Obslouží požadavek „GET /“. Analogicky můžeme obsloužit POST požadavek: dispatch_post('/', 'moje_post_funkce')
. Limonade umožňuje navíc obsloužit i požadavky UPDATE a DELETE, čímž velmi usnadňuje vytváření služeb s API typu REST. Navíc v případech, kdy nelze určit požadavek DELETE nebo UPDATE (v HTML formulářích), lze použít metodu POST a požadovanou operaci předat v parametru _method.
Routování je v Limonade poměrně komplexní. Můžeme použít pojmenované parametry v cestě:
dispatch('/pozdrav/:jmeno', 'pozdrav');
function pozdrav()
{
$jmeno = params('jmeno');
return 'Ahoj $jmeno';
}
Můžeme stejně tak použít i hvězdičky (wildcards), můžeme tyto wildcards pojmenovat či rovnou namísto vzorku použít regulární výraz:
dispatch(array('/zavolej/*/na/**', array("co", "koho")), 'volej');
function volej()
{
# Odpovida napr. /zavolej/ahoj/na/karla
$co = params('co');
$koho = params('koho');
}
dispatch('^/muj/vlastni/(d+)/regexp', 'funkce');
function funkce()
{
# Odpovida /muj/vlastni/12/regexp
$num = params(0);
}
Limonade obsahuje i reverzní funkci, která z cesty a parametrů vytvoří URL. Hodí se zejména ve spojení s funkcí redirect()
.
Šablony a pohledy
Přes svou velikost nabízí Limonade i podporu pro práci s pohledy, šablonami a vzhledy. Jako šablonový engine je použit (nepřekvapivě) samotný jazyk PHP.
Šablony pohledů (views) jsou uloženy v adresáři views (lze změnit příslušnou volbou) a konvence frameworku velí pojmenovávat je např. post.html.php. Ve skriptu jsou nejprve nastaveny parametry pro šablony funkcí set()
, např. takto: set('jmeno', 'Pepa Zdepa');
K získání výsledku z pohledu slouží funkce render()
, které je jako parametr předáno jméno pohledu – render('stranka.html.php')
.
Vzhledy (layouty)
Výsledky pohledů mohou být vloženy do jiných šablon – vzhledů (layouts). Použitý vzhled je předán jako druhý parametr funkce render()
nebo nastaven funkcí layout()
.
Výsledky mohou být vypsány přímo z funkce render()
, ale Limonade obsahuje některé pomocné funkce. Místo render()
můžete použít například funkci html()
, která přidá patřičné informace o MIME typu a o kódování. Podobné jsou funkce xml()
, css()
, txt()
či json()
. Pokud je třeba poslat přímo obsah souboru jako binární data, použijeme render_file()
– postará se za nás o zjištění správného typu z přípony a pošle správnou hlavičku.
Další funkce
V Limonade máme k dispozici další funkce pro zjednodušení práce – lze tak například definovat, co se má stát před zpracováním požadavku (funkce before()
) či zpracovat připravený výstup (funkce after()
). Snadné je též nastavení konfigurace, k čemuž slouží funkce configure()
. Funkcí option()
lze nastavovat nejrůznější volby a ovlivňovat tak chování frameworku, měnit přednastavené cesty či nastavovat běhové konstanty.
Poměrně bohatý repertoár funkcí nabízí Limonade pro ošetřování chybových stavů. Funkce halt()
způsobí ukončení skriptu a vypsání ladicího výpisu. Funkci můžeme předat konstantu NOT_FOUND nebo SERVER_ERROR – framework s těmito chybami naloží tak, že vrátí odpovídající HTTP kód (404 nebo 500).
Zpracování chyb lze samozřejmě uživatelsky ošetřit a napsat si vlastní chybové handlery.
Chcete se naučit o PHP víc?
Akademie Root.cz pořádá školení Úvod do PHP. Kurz je určen všem současným a budoucím webovým vývojářům, kteří se chtějí od základu seznámit s programovacím jazykem PHP. Během kurzu se účastníci naučí vytvářet webové aplikace v PHP od těch nejjednodušších až po ty poměrně složité a seznámí se se všemi klíčovými vlastnostmi jazyka. Máte zájem o jiné školení? Napište nám!
Limonáda pro váš web?
Limonade je opravdu jednoduchý framework, jehož největší výhodou bude pravděpodobně jeho velikost (přesněji spíš nepatrnost). Své použití asi nenajde ve větších projektech, na nichž se podílí víc autorů, natož v high endu. Puristé mu jistě vytknou spoustu věcí, například jeho neobjektovost. Lidé, zvyklí na komfort velkých frameworků, jej mohou považovat za zbytečný, protože řeší samozřejmé věci.
Přesto své místo má: V malých webech, v pětiskriptových službičkách, kde se nevyplatí sahat po větším frameworku. V projektech na jedno odpoledne. Zkrátka všude tam, kde nespočívá těžiště v práci s obrovským množstvím dat nad velkou databází, ale kde se hodí mít k dispozici jednoduchou MVC kostru. V takových případech může ušetřit spoustu práce – minimálně tím, že vnese do vaší práce řád. A i když jej nepoužijete, můžete v něm nalézt inspiraci.
Další informace naleznete na těchto stránkách:
- Dokumentace API
- Stručný úvod (README)
- Příklady
Limonade je šířen pod licencí MIT.
Přehled komentářů