Limonade: miniaturní PHP framework

Vývojáři, kteří pracují v PHP, jistě důvěrně znají nejrůznější knihovny a frameworky, od obřích souborů knihoven, jako jsou PEAR či Zend Framework, až k malým kompaktním frameworkům typu Nette. Ale dokážete si představit framework, který má pouhých 68kB? V dnešním článku si jeden takový představíme.

 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

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:

Limonade je šířen pod licencí MIT.

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Komentáře: 12

Přehled komentářů

Mastodont Ne-lí-bí
Warning: explicit content Re: Limonade: miniaturní PHP framework
Martin Malý Re: Limonade: miniaturní PHP framework
question Re: Limonade: miniaturní PHP framework
maros Re: Limonade: miniaturní PHP framework
_ Re: Limonade: miniaturní PHP framework
Jiří Knesl Re: Limonade: miniaturní PHP framework
oxxi Re: Limonade: miniaturní PHP framework
lzap Líbí
lzap Líbí
Martin Kopta Dobrý přenos myšlenky
oxxi Re: Dobrý přenos myšlenky
Zdroj: https://www.zdrojak.cz/?p=3048