Portál AbcLinuxu, 20. dubna 2024 00:51

CakePHP: tvoríme CMS - 1 (úvod)

21. 3. 2008 | Tibor Piňo
Články - CakePHP: tvoríme CMS - 1 (úvod)  

Touto časťou sa začína seriál, v ktorom si na tvorbe konkrétnej webovej aplikácie ukážeme jednotlivé aspekty skvelého frameworku CakePHP.

Trochu histórie

Začiatky CakePHP siahajú do roku 2005, kedy Michal Tatarynowicz vytvoril minimalistický framework nazvaný Cake. Tento framework vydal neskôr pod licenciou MIT, čím položil základ pre dnešný CakePHP. Mnohí by si mohli myslieť, že napriek krátkej existencii sa nejedná o vyspelý projekt, ale opak je pravdou a aj tento seriál bude ukážkou toho, akým silným nástrojom pri vývoji webových aplikácií CakePHP je.

Dáte si koláč?

Ako som už vyššie spomínal, jedná sa o open source projekt, ktorý vyvíja Cake Software Foundation a oficiálnu stránku projektu môžete nájsť na adrese www.cakephp.org.

Jedná sa o framework postavený na skriptovacom jazyku PHP. Jednou z najväčších predností CakePHP je, že v jeho základnej kostre je inšpirovaný zrejme najlepším frameworkom súčasnosti, a to Ruby on Rails. Frameworkov, ktoré sa taktiež inšpirovali RoR, je mnoho, ale myslím si, že práve CakePHP je z nich najkomplexnejší.

Ak ste o danom frameworku ešte nepočuli, pozrite si najprv krátke video, v ktorom autor za pár minút naprogramuje kompletný blog: The Blog Tutorial. Hotovo? Tak poďme ďalej. Video je určite pôsobivé a jasne ukazuje, čo prináša CakePHP do sveta PHP. Môžeme vidieť, že aplikácia akoby sa rozvíjala „sama od seba“. Prečo je tomu tak? Pretože sa nesústreďujeme na nudné veci, ako je konfigurácia, mapovanie URL a nekonečné písanie SQL dotazov. Všetky tieto základné veci fungujú ako keby „samy od seba“, takže sa môžeme sústrediť skutočne na samotnú logiku aplikácie. A prečo to takto funguje?

Konvencia má prednosť pred konfiguráciou

Celý vývoj aplikácií pod CakePHP je tomuto heslu podriadený. Každá webová aplikácia je si v základných rysoch podobná, naše požiadavky a potreby na aplikáciu nie sú nijak unikátne. V každej aplikácii sa pripájate k databáze, vyberáte dáta z databázy, transformujete dáta, ukladáte dáta do databázy, zobrazujete dáta užívateľovi atď.

Začínať písať aplikáciu od príkazu mysql_connect a donekonečna písať stále tie isté SQL dotazy je veľmi vyčerpávajúce a neefektívne. Preto v CakePHP platí základné pravidlo konvencia má prednosť pred konfiguráciou. Toto pravidlo znamená to, že v aplikácii nastavujeme len to, v čom sa líši od ostatných, to ostatné funguje „akoby samo“. Vytvoríme napríklad model Article, ten automaticky bude hľadať dáta v tabuľke articles (názov tabuľky v databáze je vždy množné číslo od modelu), zmeniť to samozrejme môžeme, ale musíme tak urobiť sami.

DRY (Dont repeat yourself)

CakePHP je navrhnutý pre maximálnu efektivitu práce a skutočne umožňuje pracovať tak, aby sme kód napísali jedenkrát a už ho len používali. Neskôr uvidíme, ako môžeme tento princíp využívať v takmer každej časti našej aplikácie.

Model View Controller

CakePHP je MVC framework. Čo teda to magické MVC znamená. MVC je ustálený návrhový vzor, ktorý nám umožňuje transparentne rozdeliť aplikáciu do niekoľkých vrstiev. Model sa stará o manipuláciu s dátami (ukladanie, výber, aktualizáciu atď.) a následne predáva dáta Controlleru. V CakePHP tvorí model Active Record, čo je najdôležitejšia časť celého frameworku a podrobne sa jej budeme venovať v 3. časti seriálu. Controller riadi beh celej aplikácie a podľa požiadaviek zo strany užívateľa rozhoduje o chode celej aplikácie. View je prezentačná vrstva, ktorá dané dáta zobrazuje, čiže sa jedná o grafický výstup celej aplikácie.

mvc diagram

Keď sa pozrieme na základnú adresárovú štruktúru aplikácie založenej na CakePHP, môžeme vidieť nasledovné. Tieto základné časti tvoria srdce CakePHP aplikácie:

Active Record

Ako som už vyššie spomínal, jedná sa o najdôležitejšiu časť celej aplikácie. V krátkosti si ukážeme jej možnosti. Predstavme si, že máme tabuľku s novinkami. Chceme vybrať konkrétnu novinku, zmeniť jej titulok a naspäť ju uložiť do databáze.

$news = $this->News->findById(1);
$news['News']['title'] = 'nový titulok';
$this->News->save($news);

Čo poviete? Jednoduché a elegantné. Žiadne zbytočné SQL dotazy… Nechajme našu aplikáciu rásť „samú od seba“. Možnosti sú samozrejme široké a konkrétnu prácu si ukážeme neskôr.

Načo sa môžeme tešiť

V tomto seriáli si vytvoríme redakčný systém s možnosťou spravovať články, novinky, komentáre, užívateľov… Taktiež si ukážeme základy práce s AJAXom a ďalšie konkrétne prednosti tohto frameworku. Pri vytváraní konkrétnej aplikácie budeme používať verziu 1.2.0.6311-beta.

Táto časť bola trochu o teórii, v ktorej som skutočne iba v krátkosti zhrnul, čo vlastne CakePHP je. To, čo môže priniesť do našej práce a efektívnosti, si ukážeme pri vytváraní konkrétnej webovej aplikácie.

Seriál CakePHP: tvoríme CMS (dílů: 6)

První díl: CakePHP: tvoríme CMS - 1 (úvod), poslední díl: CakePHP: tvoríme CMS - 6 (admin rozhranie).
Následující díl: CakePHP: tvoríme CMS - 2 (začíname pracovať)

Související články

Seriál: Ruby pro začátečníky
Seriál: PEAR
Seriál: Smarty, šablonovací systém

Odkazy a zdroje

CakePHP.org
Začíname s CakePHP

Další články z této rubriky

LLVM a Clang – více než dobrá náhrada za GCC
Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
Reverzujeme ovladače pro USB HID zařízení
Linux: systémové volání splice()
Programování v jazyce Vala - základní prvky jazyka

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.