Choď na navigáciu
Nálepky: cms CakePHP

1. Tvoríme CMS s CakePHP - ú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ácie 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, 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 model view controller architektúra

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

  • models
    • behaviors
  • views
    • helpers
  • controllers
    • components

Detailné informácie o implemntácii MVC v CakePHP môžete nájsť v článku MVC model view controller v CakePHP

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ály 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.5875 pre-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.

Teším sa na vaše námety a pripomienky v diskusii.

Povedz o článku aj ostatným - www.pridej.cz

Hodnotenie článku: 39%
Počet hodnotení: 110

zlýdobrý

Komentáre k článku

Nový komentár

  1. Titulok: Aktualizacia
    Autor: Tibor
    Vytvorený: 13. 02. 2008 00:16

    Clanok bol znacne aktualizovany, pretoze povodna verzia sa mi zdala byt znacne slaba. Dufam, ze teraz uvod skutocne uvadza ludi do sveta cakephp.

  2. Titulok: CakePHP
    Autor: greppi
    Vytvorený: 24. 02. 2008 19:30

    tento clanok je super ^^, paci sa mi :)

  3. Titulok: ok
    Autor: ja
    Vytvorený: 29. 03. 2008 11:10

    konecne jsem nasel nejaky smysluplny prehled a uvod do cake. diky moc, jdu cist dalsi dily!

  4. Titulok: Hura
    Autor: Nufacik
    Vytvorený: 16. 06. 2008 22:03

    Hura, konecne dobry serial. dufam, ze to nezakape na tom, ze niekto na to nebude mat cas a ostane to lezat ladom. tesim sa na dalsie diely.

  5. Titulok: Vdaka
    Autor: Ivan S.
    Vytvorený: 02. 01. 2009 09:01

    Vdaka za serial, je skvele, ze aj v slovencine uz nieco take existuje a nie je potrebne lustit blogy s anglickym slovnikom v ruke, ked sa chce clovek nieco nove dozvediet. Vela chuti do tvorenia novych dielov :-)