CodeIgniter | jednoduchý, efektivní framework

Každý, kdo se zabývá vývojem webových aplikací v PHP, dříve či později řeší otázku jak si ušetřit práci. Jak efektivně vytvářet webové aplikace. Většina z nás si najde způsob, ať je to vlastní knihovna funkcí, využívání PEAR a PECL, použití opensource CMS systému. Druhou cestou jsou PHP frameworky, které se snaží řešit věci komplexněji většinou pomocí modelu MVC.

CodeIgniter(CI) patří do té druhé skupiny, jedná se o malý (300Kb) framework, který je velice intuitivní, jednoduchý na instalaci a používání. Snaží se, co nejefektivněji řešit komplexní problémy s co nejmenšími nároky na programátora a systém.

Základní výbava frameworku postihuje většinu běžně používaných aplikací. Vše se snaží být maximálně jednoduché. Naleznete zde knihovny na upload souborů, práci s mailem, ftp, databází, cookies a seesions, práci s formuláři, obrázky, kalendářem a mnoho dalších. Základní výčet je opravdu rozsáhlý. Mnoho dalších je pak k dispozici na projektové wiki.

Další prvky které jsou formou modulů k dispozici jsou takzvané Hlepery. Jsou to malé utilitky, které můžete volat napříč celým frameworkem a usnadňují vám život tím, že pomáhají řešit jednoduché problémy, které se často opakují. Například oříznutí délky textu na požadovaný limit, práce s url a odkazy a podobně.

Proniknout do vývoje pomocí CodeIgniter zabere pokročilejšímu uživateli opravdu pár minut, zvláště pokud bude nahlížet do dokumentace, která je opravdu skvěle připravena. Vše je popsáno velice srozumitelně, včetně ukázkových příkladů.

Řada vývojářů má k použití frameworku mnoho výhrad. Mezi ně patří práce s cizím kódem, špatná možnost přizpůsobování a další. CodeIgniter Vám nenabízí z tohoto pohledu, komplexní moduly jako například diskuze, ale jen vývojové prvky a diskusi si musíte sestavit sami. Proto jsem pátral jak je to s možností vlastních modulů a úprav modulů, které jsou dodávány v rámci CI.

Princip rozšiřování a úprav je jednoduchý. Struktura aplikace je rozdělena do dvou větví. Na jádro frameworku (system) a samotnou aplikaci (application). V systémové části jsou všechny dodávané moduly jako například modul kalendáře, na kterém vysvětlím princip. Modul kalendář přibalený do CI, neobsahuje funkci pro odlišení víkendů. Pokud takovou funkcionalitu potřebujete, jednoduše si zkopírujete třídu kalendáře do specifické složky ve vaší aplikaci. Přejmenujete ji tak, že pře název třídy vložíte "my_". CI sám zjistí, že máte vlastní třídu na kalendář a bude ji používat. To znamená, že bez zásahu do systémových tříd, můžete vymýšlet a přidávat jakékoliv funkcionality. Je to ta nejjednodušší technika jakou si lze představit, ale je velice efektivní.

Podobným principem se rozšiřují a upravují funkcionality všude v systému. Nevyřčeným pravidlem je tedy"nezasahovat do jádra a rozšiřovat a upravovat pomocí modulů.

Všechny moduly se natahují až v okamžiku, kdy jsou opravdu třeba. Což pomáhá zvyšovat rychlost aplikací. Zde také narážíme na rychlost frameworku. CI je určen pro rychlý vývoj menších aplikací, ostatně na nějaké entspire projekty, byste asi také neřešili v PHP, ale třeba v JAVĚ. Rychlost je relativně slušná na průměrný web. Prakticky mám odzkoušen provoz CI na webu, kde byly jednrázové špičky v návštěvnosti kolem 60000 uživatelů a sysétm to zvládal na výbornou.

Pokud by snad výkon nedostačoval, je v CI obsažen systém mezipaměti stránek (cache). Takže pokud předpokládáte vysoké čísla v návštěvnosti, použijte jej. Jak využijete cache je na vás, CI nemá žádný extrémě sofistikovaný systém inteligence a nechává rozhodnutí kdy, jak a co ukládát do cache na Vás.

Pokud jste uvažovali o nějakém Šablonovacím systému, například SMARTY, CI uspokojí i poměrně náročné vývojáře. Všechny šablony jsou ukládány jako bloky, ktré se volají uvnitř controleru. Bloky jsou znovupoužitelné pokud si je vhodně vyrobíte, můžete je načítat do paměti nebo rovnou zobrazovat.
Pomocí různých textových helperů, jednoduše dosáhnete rychlého bezchybného výstupu jako například ve SMARTY.

Práce z databází je volná a není tedy nutné dodržovat striktní pravidla pojmenování tabulek. CI používá odlehčený model Active Record, který z DB a výsledky pracuje velmi efektivně z pohledu vývojáře. Z pohledu výkonu je to již o chlup horší, ale CI je určen na jiné věci než monstrózní DB aplikace. Vývojář si může vybrat poloautomatickou tvorbu dotazů do DB, nebo psát SQL dotazy opravdu doslovně. Což je výhodné, pokud potřebuje provést optimalizace. Běžný postup, který používám je ten, že aplikaci napíšu s (polo)automatickými dotazy do DB, pokud se vyskytují kritická místa tak optimalizuji dotazy zpětně, ručním přepisem.

Myslím že základní popis máme za sebou. Musím uznat, že vývoj pomocí CI je opravdu rychlý a efektivní. Samozřejmě má své mouchy, ale to na co je určen, zvládá elegantně a s grácií. Nemohu nic než doporučit. Rychost oproti běžnému psaní od nuly je cca 14 dnů : 2 dnům, což je úžasné.

Doporučuji shlédnout ukázková videa na ElisLab a stáhnout doplněk Rapyd. Ale o tom zas příště.

 

  • Facebook
  • Twitter
  • Dribbble
Michal Hotovec
"Přibližně 10 let se pohybuji v oblasti grafiky, webu a videa. Vizuální tvorba je mojí prací a zároveň koníčkem. Baví mne pracovat s lidmi kteří něco umí. S lidmi, kteří umí používat mozek, protože jinak je to strašlivá nuda."