CodeIgniter
Vývojář | British Columbia Institute of Technology |
---|---|
Aktuální verze | 4.4.1 (5. září 2023) |
Vyvíjeno v | PHP |
Typ softwaru | webový aplikační framework a svobodný software |
Licence | Open Software License licence Apache licence MIT BSD licence |
Web | codeigniter |
Některá data mohou pocházet z datové položky. |
CodeIgniter (zkratka CI) je open source framework, založený na architektonickém principu MVC a určený pro vývoj dynamických webových aplikací v PHP. Byl vyvíjen americkou společností EllisLab společně s rozsáhlou internetovou komunitou. První veřejná verze frameworku byla uvolněna v únoru roku 2006. V září 2014 společnost EllisLab oznámila, že vývoj CI bude pokračovat pod patronátem British Columbia Institute of Technology. V březnu 2015 byla zveřejněna nová verze CodeIgniter 3.0.0.
CI do verze 2. je licencován pod Apache/BSD licencí, od verze 3. pod MIT licencí.
Cílem CI je ušetřit vývojářům čas a práci poskytnutím sady nástrojů a knihoven s jednoduchým rozhraním řešících časté a opakující se úlohy. Vývojář se tak může soustředit na řešení zadané úlohy, kterého (s využitím nabízené funkcionality) dosáhne s menším množstvím potřebného kódu.
Provozní prostředí a konfigurace
[editovat | editovat zdroj]CI je aplikace napsaná v jazyce PHP. Zdrojový kód vychází z PHP verze 4.1. Bude však fungovat i na verzi 5, ačkoliv nevyužívá žádné její nové vlastnosti. Vývojářům tedy nic nebrání psát vlastní kód (jako nadstavbu frameworku), který těží z vlastností PHP5. Prozatím se autoři zdráhají vypustit verzi frameworku založenou na PHP5, hlavním argumentem je malá rozšířenost podpory této verze na komerčních hostingových službách.
K provozování aplikace je potřeba běžný webový server, schopný zpracovávat PHP skripty, jako je Apache nebo LiteSpeed. Samotný Framework je vyvíjen jako odlehčený, to znamená, že jádro systému závisí jen na několika malých knihovnách. Další potřebné knihovny jsou nahrávány až v případě potřeby a za běhu. Takový způsob dynamického nahrávání zdrojů velmi přispívá k rychlosti frameworku.
Zprovoznění samotného frameworku je jednoduché. Stačí nakopírovat zdrojové kódy do libovolného adresáře, odkud čte webový server. Ten následně obsahuje soubor index.php
a adresář system
(a dále by měl obsahovat také licenční ujednání licence.txt
).
Soubor index.php
obsahuje dvě důležité proměnné: cestu k adresáři system
, kde jsou umístěny zdrojové kódy frameworku a cestu k adresáři application
, kam budou uloženy zdrojové kódy aplikace. Lze tedy adresář system
umístit mimo adresář projektu a sdílet jej mezi více projekty. Taková praktika setří místo a usnadňuje také upgrade na vyšší verzi frameworku. Adresář application
(který je členěn na další adresáře) je pak vhodné umístit do kořenového adresáře projektu. Soubor index.php
dále slouží jako jediný bod vstupu (single point of entry).
Veškerá další konfigurace probíhá editací různých souborů v adresáři application/config. Jedná se především o tato nastavení:
config.php
– různá nastavení pro správný chod aplikaceautoload.php
– automatické nahrávání zdrojů jako jsou knihovny, modely a pomocné funkce (helpery)database.php
– nastavení přístupu k databáziroutes.php
– umožňuje přepisovat URI dotazy
Knihovny
[editovat | editovat zdroj]Ve verzi 2.1.0 obsahuje framework spousty knihoven ve formě samostatných tříd, které nabízenou funkcionalitou pokrývají standardní a často řešené úlohy. Mezi nejpoužívanější patří:
Calendar Class
– generuje kalendářDatabase Class
– slouží k vytváření dotazů nad databázovým systémem, inspirováno návrhovým vzorem ActiveRecordEmail Class
– posílání zpráv, přidávání souborů jako přílohFile Uploading Class
– usnadní proces a zvyšuje bezpečnost nahrávání souborů na serverForm Validation Class
– na základě určených pravidel provádí kontrolu vstupních dat a zobrazuje chybové zprávy, může filtrovat nebezpečné vstupyImage Manipulation Class
– zmenšování a ořezy obrázků, vkládání vodoznakuPagination Class
– generuje stránkování při zobrazování rozsáhlých souborů datSession Class
– ukládání perzistentních dat uživatelské seance pomocí cookies nebo databáze
Jednodušší problémové oblasti jsou pak řešeny za pomoci knihoven pomocných funkcí, například:
Cookie Helper
– usnadňuje práci se soubory cookiesDownload Helper
– vynutí stahování souboru do počítačeFile Helper
– usnadňuje práci se soubory jako je jejich zapisování, čtení a zjištění dodatečných informacíHTML Helper
– generuje některé značky jazyka HTMLTypography Helper
– obsahuje funkce umožňující formátování textu při zachování jeho sémantikyURL Helper
– užitečné funkce pro práci s řetězci URL
Dokumentace a komunita
[editovat | editovat zdroj]Vzhledem k vyčerpávající a přehledné dokumentaci bývá Codeigniter často uváděn jako framework s příkrou křivkou učení. Dokumentace se týká vždy poslední stabilní verze a je rozdělena do několika částí, které pokrývají hlavní témata. Čtenář je tak nejdříve seznámen se základními informacemi jako jsou požadavky a licenční ujednání. Dále je vysvětlena samotná instalace nebo upgrade z předchozích verzí frameworku. Následuje kapitola, která představuje framework z hlediska jeho funkcí, architektury a vývojového diagramu požadavku (demonstrace MVC). Další kapitola pokrývá obecná témata. Ta vysvětlují hlavní zásady a styl práce s frameworkem a také uvádějí krátké ukázky zdrojových kódů pro typické konstrukce. Zbývající dvě kapitoly tvoří referenční příručku s komentářem a ukázkami zdrojových kódů pro knihovny a pomocné funkce.
Diskusní fórum má přes 100 000 registrovaných členů a témat, a takřka 600 tisíc příspěvků. Tím tvoří rozsáhlou znalostní bázi, která má své místo vedle klasické dokumentace. Aktivních členů fóra je 3-5 tisíc. Komunita je mezinárodní a velmi živá, komunikačním jazykem je angličtina. Odpověď na dotaz do sekce fóra zabývající se vývojem aplikací obvykle netrvá déle než jednu hodinu.
Jiným komunitním projektem je systém wiki, určený pro příspěvky ze strany uživatelů frameworku. Ti obvykle přispívají formou popisu řešení určité úlohy nebo problému. Kromě toho slouží wiki jako dokumentace pro uživatelské nadstavby frameworku jako jsou jednotlivé knihovny nebo celé aplikační moduly.