Pokud používáte Zend Framework MVC, tak pomocí routeru určujete, na jakou action
metodu určitého controlleru se požadavek, který jde na dané URL přepojí. Ve
výstupech (views) pak pravděpodobně získáváte URL nějakým způsobem zpět.
Buď můžete URL psát natvrdo, nebo využít flexibilnější metodu a
použít view helperu Zend_View_Helper_Url
. Na něm mě ale vadí
jednak určitá ukecanost použití - musíte mu nacpat dost velké asociativní pole jako
parametr a navíc je to jen view helper, s obtížemi se používá v jinde než ve views.
Další věc, co mě chyběla, je jasná definice parametrů a vůbec tvarů URL. Částečně
to jde řešit definicí routeru přes config, ale to mě příliš nevyhovuje,
raději si router inicializuji v kódu v aplikační třídě. Napsal
jsem si tedy vlastní řešení, které využívá XML soubor jako zdroj všech URL
v aplikaci.
Původně jsem chtěl dnes napsat článek o řešení URL mapování, které používám,
nicméně ještě to odložím (tím odložím i to zveřejnění
zdrojových kódů blogu). Dnes bych se rád zmíníl o tom, jak správně uchopit
Model View Controller (MVC) návrhový vzor a to
jak obecně, tak z pohledu PHP a Zend Frameworku.
Nebudu popisovat úplné základy a budu předpokládat, že čtenář už má s použitím
MVC nějaké zkušenosti.
Další věc, kvůli které článek píšu je to, že jsem na základě uvedených úvah
přepsal domain třídy (v MVC část model) a nedosáhl jsem úplně toho, co jsem
od toho čekal.
Tento příspěvěk by se dal nazvat také "za bootstrap štíhlejší." Jde o to, že tak,
jak je v současné době Zend_Framework navržen, je nutné v bootstrap
souboru index.php
provést spoustu činností. Bootstrap tak
velmi bobtná a hlavně se v něm hromadí globální kód, což se mi jako příznivnici OOP
a zapouzdření moc nelíbí. Proto jsem se nechal inspirovat přístupem, který
byl v návrhu rozšíření Zend_Application
a Zend_Application_Resource.
Oba návrhy byly nakonec zamítnuty, na konci článku se pokusím najít důvody proč.
K novinkách v chystaném php 5.3 patří také mysqlnd. První věc, co člověka napadne,
když uvidí ten název, že se jedná o nové rozšíření pro práci s mysql. Ale
tak to není. Jedná se o náhradu libmysql, neboli toho, co stojí pod ext/mysql,
ext/mysqli, ext/pdo_mysql. Jde tedy o úplně novou implementaci samotného mysql protokolu
mezi klientem a serverem. Jaké výhody to bude mít oproti použití libmysql a proč se
k tomu vývojáři uchýlili?
V dalším článku něco o late static bindings (LSB), věc, která by objektové
programování v PHP měl a posunout opět o něco dál. V podstatě lze říci, že LSB
je o statické dědičnosti, která v PHP nefungovala tak, jak by si člověk zvyklý z
jiných jazyků představoval. Lecos vypadá v PHP 5.3 lépe, ale neradujme se
předčasně.