Julho 28th 2007 05:18 pm

Zend Framework - MVC na linha de comando

Neste post apresentarei um exemplo que criei para utilizar as funcionalidades do MVC do Zend Framework com uma interface na linha de comando, basicamente o que fiz foi integrar o módulo Zend_Console com o módulo Zend_Controller, de maneira que fosse possível mapear as opções vindas da variável $_SERVER['argv'] para as actions, para isso foi preciso estender as classes Zend_Controller_Request_Abstract e Zend_Controller_Router_Rewrite.

Arquivos do Exemplo

A classe default que o framework utiliza para tratar as requisições feitas ao front é a Zend_Controller_Request_Http. Para tratar as requisições feitas na linha de comando criei uma classe chamada Controller_Request_Cli, onde adiciono os parametros vindos da linha de comando ex.: arquivo.php -c -f -t --option valor como parametros da requisição, de maneira similar a uma requisição http, onde são adicionados os parametros http://www.example.com/arquivo.php?c=1&f=2&option=valor.

PHP:
  1. <?php
  2.  
  3. class Controller_Request_Cli extends Zend_Controller_Request_Abstract {
  4.  
  5.     protected $_opts;
  6.  
  7.     public function addGetopt(Zend_Console_Getopt $opts) {
  8.         $this->_opts = $opts;
  9.         $this->_handleOptions();
  10.     }
  11.  
  12.     protected function _handleOptions() {
  13.         $opts = $this->_opts->getOptions();
  14.         foreach ($opts as $option) {
  15.             if ($option != 'command') {
  16.                 $this->setParam($option, $this->_opts->getOption($option));
  17.             }
  18.         }
  19.     }
  20.  
  21.     public function getComandInfo() {
  22.         return $this->_opts->getOption('command');
  23.     }
  24. }

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

Páginas: 1 2 3

No Comments yet »

Trackback URI | Comments RSS

Leave a Reply

« Criando Listener para o PHPUnit | Depurar webservices com Zend Studio + PHP Soap »