Yii

Yii
První vydání3. prosince 2008
Aktuální verze2.0.48 (22. května 2023)
Operační systémmultiplatformní software
Vyvíjeno vPHP
Typ softwaruwebový aplikační framework
Licence3-clause BSD License
Webwww.yiiframework.com
Některá data mohou pocházet z datové položky.

Yii je poměrně mladý, avšak výkonný open-source PHP framework určený pro vývoj rozsáhlých webových aplikací. Klade důraz na pragmatičnost, znovupoužitelnost a jednoduchost použití. Yii je striktně objektově orientovaný systém, každá komponenta frameworku je nezávislá, konfigurovatelná a rozšiřitelná.

V současné době je k dispozici stabilní verze 1.1.2, uvolněná v květnu 2010. Na vývoji frameworku se podílí mezinárodní tým vývojářů zahrnující: Qiang Xue (USA), Wei Zhuo (Austrálie), Kyle Ferreira (Kanada), Sebastian Thierer (Argentina), István Beregszászi (Maďarsko) a Johan Turnquist (USA).

Původní projekt započal v lednu 2008 jako aktivita jediného vývojáře, Qiang Xue, který se více než tři roky podílel na vývoji a udržování známého frameworku Prado. Rozhodnutí začít pracovat na vývoji nového frameworku bylo motivováno především potřebou jednoduchého, efektivního a rozšiřitelného systému. V říjnu roku 2008, po deseti měsících intenzivního vývoje, byla uvolněna první alfa verze Yii. Ta si rychle získala širokou pozornost zejména proto, že předčila výkonem všechny zavedené PHP frameworky, avšak stále nabízela bohatou sadu funkcí. Oficiální verze 1.0 následovala v prosinci 2008.

Návrh Yii byl inspirován těmito projekty:

  • Prado – hlavní zdroj nápadů, ze kterého bylo přejato komponentní a událostmi řízené paradigma, vrstvy databázové abstrakce, modulární aplikační architektura, systém internacionalizace a lokalizace a další
  • Ruby on Rails – odtud přejímá zásadu „konvence před konfigurací“ a čerpá při implementaci návrhového vzoru ActiveRecord
  • Symfony – jako vzor pro návrh filtrů a architektury zásuvných modulů
  • Joomla – modulární architektura
  • jQuery – integrováno jako základní knihovna pro podporu JavaScriptu

Softwarové komponenty frameworku jsou poskytovány na základě BSD licence.

Vlastnosti

  • rozdělení aplikační a prezentační logiky na základě architektonického principu MVC, který umožňuje relativní nezávislost prezentační, aplikační a databázové vrstvy aplikace a tedy jejich lepší správu
  • přístup ke zdrojům dat pomocí Database Access Objects (DAO) a Active Record
  • integruje jQuery, oblíbenou javascriptovou knihovnu
  • jednoduché a bezpečné zpracování formulářů a validace vstupních dat
  • autentizace a autorizace – kontrola přístupu na základě hierarchických rolí (RBAC)
  • podpora motivů a rychlé visuální změny aplikace
  • webové služby – automatické generování specifikací a zpracování požadavků WSDL služeb
  • lokalizace (L10N) a internacionalizace (I18N) – překlad zpráv, formátování čísel a údajů o datu a čase
  • vrstvená cache pro data, stránky, fragmenty stránek a dynamický obsah, která významně snižuje reakční čas aplikace
  • zpracování, archivování a filtrace chyb
  • zabezpečení a odolnost aplikace vůči různým druhům útoku
  • generování validního XHTML kódu

Provozní prostředí a konfigurace

Yii je aplikace napsaná v jazyce PHP. K jejímu provozování je potřeba běžný webový server, schopný zpracovávat PHP skripty, jako je Apache nebo LiteSpeed. Součástí instalačního balíčku frameworku je mimo jiné i skript, který kontroluje, zda provozní prostředí splňuje všechny požadavky. Mezi základní požadavky patří PHP verze 5.1.0 (nebo vyšší) a některá jeho rozšíření. Z hlediska vývojáře je vhodné rozumět objektovému programování (OOP).

Další rozšíření jazyka PHP jsou nutná, nikoliv však nezbytná pro funkčnost Frameworku, například pro práci s různými databázovými systémy nebo pro podporu různých implementací cache.

Instalace Yii spočívá ve stažení instalačního balíčku a extrakci zdrojových kódů frameworku. Dále je vhodné využít výhod, které framework nabízí. Za tímto účelem je součástí instalačního balíčku nástroj yiic (konzole), který lze použít k automatizaci tvorby kódu pro různé části aplikace. Konzole, dodávaná pro prostředí Mac OS, Windows i Linux, automaticky vytvoří kostru (webové) aplikace. Použití konzole z příkazové řádky může vypadat takto:

% YiiRoot/framework/yiic webapp WebRoot/test

Příkaz vytvoří adresář test, do kterého umístí další soubory a adresáře, čímž vytvoří základ nové aplikace. V nově vytvořeném adresáři se nachází soubor index.php a adresář protected, další struktura je libovolná.

Soubor index.php slouží jako jediný bod vstupu (single point of entry) a zároveň tvoří tzv. bootstrap soubor, který při každém požadavku vytváří, konfiguruje a zavádí aplikaci ve formě objektů do paměti serveru. Aplikace představuje kontext pro zpracování požadavku. Jejím hlavním úkolem je vyřešit žádost uživatele předáním požadavku na vybraný kontroler k dalšímu zpracování. Je tedy vytvořena zaváděcím skriptem jako Singleton a implementuje také návrhový vzor Front Controller.

Adresář protected obsahuje zdrojové kódy aplikace a také provozní složky:

  • protected/runtime – dočasné soubory vytvořené během práce aplikace
  • protected/extensions – rozšíření frameworku od třetích stran
  • protected/modules – každý modul tvoří podsložku
  • protected/config – konfigurační soubory
  • protected/controllers – třídy kontrolerů
  • protected/views – soubory pohledů
  • protected/models – třídy modelů

Komponenty aplikace

Funkčnost aplikace je možné přizpůsobit konfigurací stávajících komponent, obohatit o další prvky rozšířením stávajících nebo dodáním zcela nových komponent ve formě tříd. Framework spravuje sadu 222 standardních komponent – tříd. Aplikace vytvořená automaticky pomocí konzole sama zavádí například tyto komponenty, jejich společným jmenovatelem je časté použití:

  • CAssetManager – správa souborů a jejich zpřístupnění webovému klientu
  • CAuthManager – poskytuje autorizaci, implementuje správu přístupu založenou na rolích
  • CCache – základní třída pro různé druhy ukládání cache data
  • CClientScript – spravuje javascriptové a css soubory
  • CDbConnection – reprezentuje připojení k databázi
  • CErrorHandler – řeší nezachycené chyby
  • CHttpRequest – reprezentuje HTTP dotaz a pracuje se soubory cookie
  • CUrlManager – spravuje řetězce URL pro Yii aplikace
  • CSecurityManager – poskytuje soukromé klíče, hashovaní funkce a šifrovací funkce
  • CWebUser – reprezentuje persistentní data uživatele aplikace
  • a některé další

Dokumentace a komunita

Součástí projektu je rozsáhlá dokumentace, kterou tvoří několik různých částí. Z hlediska pochopení způsobu, jak framework pracuje, je nejdůležitější podrobná a vyčerpávající dokumentace všech tříd. Ta podává detailní informace o vlastnostech, metodách, událostech a vztazích (odvození dědičností) definovaných v rámci tříd. Použití frameworku na ukázkovém projektu představuje sekce návodů. V jednotlivých krocích je čtenář seznámen s instalací, architekturou a základními komponentami frameworku při vytváření jednoduchých ukázkových aplikací.

Komunita uživatelů a vývojářů se schází na oficiálním fóru. To slouží jako hlavní komunikační platforma jak pro různá oznámení, tak i pro diskuse a hlavně pro řešení problémů jednotlivých uživatelů, které mohou při vývoji aplikací nastat. V současné době má fórum asi tisícovku aktivních členů.

Externí odkazy