Yii
První vydání | 3. prosince 2008 |
---|---|
Aktuální verze | 2.0.48 (22. května 2023) |
Operační systém | multiplatformní software |
Vyvíjeno v | PHP |
Typ softwaru | webový aplikační framework |
Licence | 3-clause BSD License |
Web | www |
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 aplikaceprotected/extensions
– rozšíření frameworku od třetích stranprotected/modules
– každý modul tvoří podsložkuprotected/config
– konfigurační souboryprotected/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 klientuCAuthManager
– poskytuje autorizaci, implementuje správu přístupu založenou na rolíchCCache
– základní třída pro různé druhy ukládání cache dataCClientScript
– spravuje javascriptové a css souboryCDbConnection
– reprezentuje připojení k databáziCErrorHandler
– řeší nezachycené chybyCHttpRequest
– reprezentuje HTTP dotaz a pracuje se soubory cookieCUrlManager
– spravuje řetězce URL pro Yii aplikaceCSecurityManager
– poskytuje soukromé klíče, hashovaní funkce a šifrovací funkceCWebUser
– 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ů.