Archív

Příspěvek oštítkován ‘zend’

Co mě zaujalo na ZendConu 2009

23.10.2009 View Comments

Ve dnech 19-22 října se v San Jose v Kalifornii konal 5. ročník konference ZendCon (Zend PHP Conference for Developers). Na této konferenci je skvělé to, že je opravdu pro vývojáře a i když jsem se tam letos nedostal tak si ze slidů z konference a probíraných témat něco odnesu. To se tolik nedá říci o lokálním Webexpu, kde jsou přednášky cíleny spíše na začátečníky a na ty co s danou problematikou většinou nepřišli do styku.

Nejvíce mě zaujaly přednášky od těchto přednášejících:

Ilia Alshanetsky

Fabien Potencier

Stefan Priebsch

Derick Rethans

Ralph Schindler

Matthew Weier O’Phinney

Tyto přednášky jistě stojí za to se na ně podívat a poučit se co se na nejznámější konferenci probíralo, samozřejmě to jistě nebylo všechno. Žádný účastník také jistě nestihl všechno co chtěl, protože program byl hodně plný. Mluvilo se také o uvedení Zend Server 5.0 beta a Zend Studia 7.1 beta, které si můžete již vyzkoušet.

Pokud někoho zaujalo něco dalšího tak to napište do komentářů.

Categories: php Tags: , , ,

Zend_Rest_Route a Zend_Rest_Controller v ZF 1.9

01.09.2009 View Comments

Proč REST a co to obnáší?

V Zend Frameworku 1.9 byla přidána pro používání REST v url a v controlleru.

REST je v módě a proto nám ho přidali i do ZF. Ne vážně samozřejmě každý teď dělá do REST. Implementace RESTu existuje v každém větším frameworku. V ZF už delší dobu je REST klient i server. Klienta můžete využít pro práci s mnohými službami na internetu (twitter, flickr, …).

V tabulce je dobře vidět jak se využije HTTP protokol. Metody PUT, DELETE se běžně nevyužívají.

Akce SQL HTTP
Create Insert PUT
Read Select GET
Update Update POST
Delete Delete DELETE

REST API je součástí mnoha z nich. Pokud máte aplikaci RESTful, není problém potom provozovat i REST api.

  • do ZF byli přidány dvě nové třídy Zend_Rest_Route, Zend_Rest_Controller
  • přinese nám to využití HTTP protokolu (GET, POST, PUT, DELETE)
  • pro používání RESTu změníme controller, budeme používat Zend_Rest_Controller místo Zend_Action_Controller
  • v controlleru je potřeba potřeba definovat tyto metody
    • indexAction()
    • getAction()
    • postAction()
    • putAction()
    • deleteAction()
  • GET je get a všechny destruktivní akce jsou přes POST

Vzal jsem základní tutorial z akrabatu a modifikoval jsem ho pro použití s REST. Zdrojové kódy jsou k dispozici na bitbucketu.

Do bootstrapu je potřeba přidat definici pro Zend_Rest_Route

    function _initRestRoute()
    {
        $this->bootstrap('Request');
        $front = $this->getResource('FrontController');
        $restRoute = new Zend_Rest_Route($front, array(), array(
            'default' => array('albums')
                ));
        $front->getRouter()->addRoute('rest', $restRoute);
    }

    function _initRequest()
    {
        $this->bootstrap('FrontController');
        $front = $this->getResource('FrontController');
        $request = $front->getRequest();
        if (null === $front->getRequest()) {
            $request = new Zend_Controller_Request_Http();
            $front->setRequest($request);
        }
        return $request;
    }

a je potřeba modifikovat controller, aby využíval celký HTTP protokol.

class AlbumsController extends Zend_Rest_Controller
{
    private $_albums;
    private $_form;

    public function init()
    {
        /* Initialize action controller here */
        $this->_albums = new Zend_Db_Table('albums');
     	$this->_form = new Form_Album();
    }

    public function indexAction()
    {
        $this->view->title = "My Albums";
        $this->view->headTitle($this->view->title, 'PREPEND');
        $this->view->albums = $this->_albums->fetchAll();
    }

    public function listAction()
    {
        $this->_forward('index');
    }

    public function getAction()
    {
        $this->view->album = $this->_albums->find($this->_getParam('id'))->current();
    }

    public function putAction()
    {
        $album = $this->_albums->find($this->_getParam('id'))->current();
        if ($this->_form->isValid($this->_request->getParams())) {
            $album->setFromArray($this->_form->getValues())->save();
            $this->_redirect('albums');
        } else {
            $this->view->album = $album;
            $this->view->form = $this->_form;
            $this->render('edit');
        }

    }

    public function postAction()
    {
        if ($this->_form->isValid($this->_request->getParams())) {
	       $this->_albums->createRow($this->_form->getValues())->save();
           $this->_redirect('albums');
        } else {
            $this->view->form = $this->_form;
            $this->view->title = "Add new album";
           $this->render('new');
        }

    }

    public function newAction()
    {
        $this->view->title = "Add new album";
        $this->view->headTitle($this->view->title, 'PREPEND');

        $this->view->form = $this->_form;

    }

    public function editAction()
    {
        $this->view->title = "Edit album";
        $this->view->headTitle($this->view->title, 'PREPEND');
        $album = $this->_albums->find($this->_getParam('edit'))->current();
	    if ($album) {
    	    $this->_form->populate($album->toArray());
	    }
    	$this->view->form = $this->_form;
    	$this->view->album = $album;

    }

    public function deleteAction()
    {
        $this->view->title = "Delete album";
        $this->view->headTitle($this->view->title, 'PREPEND');

    	$album = $this->_albums->find($this->_getParam('id'))->current();
    	$album->delete();
        $this->_redirect('albums');

    }
}
Categories: zend framework Tags: ,

Zend Studio NEON beta

11.10.2007 View Comments

Zend spolupracuje na vývoji PDT pro Eclipse, nedávno vyšlo PDT ve verzi 1.0 a také Zend ukázal beta verzi svého nového Zend Studia založené na stejné technologii, jen vylepšené o dost dalších věcí.

Osobně mi PDT docela vyhovuje a nejvíc mi chybí asi podpora Zend Frameworku, jinak většinu věcí vyřešili pluginy, kterých je do Eclipse opravdu mnoho. Uvidíme co budu říkat po měsíci provozu v nové Zendu.

Další o novém Zendu
Zend: Zend Studio for Eclipse Beta
James McGlinn: Zend Studio “Neon” Beta
RonnieWeb: Nové Zend Studio for Eclipse Beta je bomba!

Categories: php Tags: , ,

Switch to our mobile site