A je to framework?
Pred kratkim sem web programerjem iz podjetja Creatoor, predaval o Zend Frameworku. Prva stvar ki jo najprej izpostavim, ko govorim o Zend Frameworku je ta, da za mene to ni “framework”, vsaj ne po tistem kar pravi definicija. To najprej povzroči zmedenost in nerazumevanje kaj sploh Zend Framework je. Za mene je to le “knjižica”[1] skript. Med množico modulov, lahko enostavno izberemo in uporabimo le tistega, ki ga rabimo. Čeprav so določeni moduli med sabo odvisni, se da ta lastnost v večini primerih povoziti.[2] Zadevi, ki sta mene najbolj pritegnili oziroma “prisilili” da sem upokojil lastne napisane knjižice sta:


MVC – Model View Controller
Velika večina “frameworkov” se vedno znova vrti okrog lastne implementacije MVC-ja. Če želite uiti iz tega začaranega kroga, je boljše, da tak framework me uporabite. Seveda tudi Zend Framework vključuje module, ki vam pomagajo pri postavitvi MVC-ja in načinov kako to dosežemo je kar nekaj. Z malce programerskega znanja boste lahko vključili že obstoječe “third-party” knjižice kot so SwiftMailer, Smarty, Propel, ADOdb, … ali pa svoje knjižice zamenjali z Zendovimi:

A je za začetnike?
Možno, je da si bom s to izjavo nakopal kakšnega “sovražnika”, ampak Zend Framewok je profesionalen izdelek in ni ravno namenjen začetnikom, ki se šele spoznavajo s PHP-jem. Čeprav je glavna filozofija in moto frameworka “Extreme simplicity”, so določeni pogledi MVC-ja in ostalih modulov precej bolj kompleksni od ostalih frameworkov (CodeIgniter, CakePHP, …). Če niste ravno naklonjeni, da občasno več ur namenite brskanju po izvorni kodi ali pa vam je uporaba API-ja tuja, vam svetujem da si omislite kaj drugega!

Primer uporabe Zend Framework knjižic
Ostane nam še demo primer uporabe. Test case je vzet iz vsakdanjika. Preko URL-ja preberemo parameter id, če id ni nastavljen ali pa ni tipa int ga nastavimo na nulo. Če slučajno zaznamo metodo POST ustavimo skripto.

Stari način:

if (isset($_GET['id']) and $_GET['id'] != "") {
	$id = (int) $_GET['id'];
} else {
	$id = 0;
}

if (strtolower($_SERVER['REQUEST_METHOD']) == 'post')
	die('POST detected');

Zend Framework:

/** Zend/Validate.php */
require_once 'Zend/Validate.php';

/** Zend/Controller/Request/Http.php */
require_once 'Zend/Controller/Request/Http.php';

/** request object */
$request = new Zend_Controller_Request_Http();

/** id */
$id = ( Zend_Validate::is($request->getQuery('id'), 'Int') ) ? (int) $request->getQuery('id') : 0;

if ($request->isPost())
	die('POST detected');

Kakor vam drago :)

Happy blogging(coding)!

  1. Library []
  2. overriding, subclassing []

Sorodni zapisi: