Zend nebo Prado? Toť otázka…

Kategorie: (Web), napsal Jirka Helmich, 7.3.2008

Tagy : , ,

Poslední týden jsem věnoval výběru frameworku, na kterém budu stavět své aplikace. Chtěl jsem dostat do ruky něco, co mi umožní jednoduše a rychle realizovat moji představu o CMS, ať už finální sbírka modulů bude reprezentovat e-shop, redakční systém, blog nebo vizitku.

Díky všeobecnému nadšení, které panuje kolem Zend Frameworku jsem v pondělí řekl "hurá, jdu napsat jádro aplikace v Zendu". Ale ono to není tak jednoduché. Tento Framework prosazuje MVC (model-view-controller) model, jehož základní myšlenka je jasná a dobrá - oddělit logiku a "vzhled" - zkrátka PHP a HTML+CSS+JS. V podání Zendu je ale tento model mírně omezený a jak řekl Tutchek, je to v tu chvíli o tom, jestli ohýbat framework kvůli webu nebo web kvůli frameworku.

Zásadní problém mám s rozdělením backend/frontend.Struktura ZF počítá s členěním www.domain.tld/modul/akce, což v základu stačí, ale pokud byste chtěli udělat backend, musíte založit subdoménu a na ní nový bootstrap a v podstatě kompletně novou aplikaci a to i přesto, že funkce na vylistování článků z databáze je pro admina v podstatě to samé jako pro zbytek světa (+- nějaký parametr). To tedy vede k myšlence linkovat do modelem definovaných actions vlastní knihovny zahrnující funkce - ty budou uložené někde mimo strukturu Zendu a budou pro obě části společné.

Další řešení je prosté a pracovně se mu na room111 říká "backend tu není". Poslední adminova položka v menu se jmenuje "přidat odkaz do menu", ve výpisu zboží vidí odkazy "přidat podkategorii" nebo "vložit nové zboží". Výhodou je méně práce pro grafika (ehm, no, když mu nedáte na výběr a do backendu mu strčíte cizí free template, má smůlu), možná (viz. dále) méně práce pro programátora a (možná) efektivnější nástroj v rukou klienta.

Ještě mě napadlo dělat moduly typu "administrace-clanky" a "clanky" a pod nimi stejné akce, což mírně koresponduje s řešením číslo jedna, nicméně je to náročnější na switchování mezi templates pro administraci a frontend.

Poslední "bejkárna", která mě napadla je nevyužívat MVC modelu Zend Frameworku, napsat si vlastní dispatcher a oddělovat logiku od výstupu "ručně" a využívat jen a pouze jednotlivých knihoven systému.

Jaký je váš názor? Kterou cestou byste šli vy? Vynalezli byste vlastní kolo?

P.S.: Prado mě se svou syntax absolutně nezaujalo.

Přínosné komentáře (moudra):

  1. Vynalezam. :)

  2. Sice trošku OT, ale co použít .NET Framework? :D

    Jinak hodně často vynalézám vlastní kolo, problém je, že už jsem kolikrát zjistil, že jsem ho vynalezl vlastně hranatý a to kulatý .NET v podstatě obsahuje. :D

    Takové napůl řešení je vlastní Framework, což v podstatě takový miniframework mám, je to taková zapouzdřená běžná funkcionalita .NETu, aby mi ušetřila psaní + funkce, co mi chyběli.

    Sem se přesně hodí věta: Vrcholem lenosti programátora je vlastní framework. :D

Zanechte zde nějaké moudro: