Julho 28th 2007 05:18 pm

Zend Framework - MVC na linha de comando

PHP:
  1. <?php
  2.  
  3. require_once('init.php');
  4.  
  5. try {
  6.     //cria as regras da linha de comando
  7.     $oGetopt = new Zend_Console_Getopt (
  8.                 array (
  9.                     'command|c=s' => '<move|delete|create> Comando obrigatório para a execução',
  10.                     'from|f-s'  => 'Origem do arquivo que será movido ou deletado',
  11.                     'to|t-s' => 'Destido do arquivo onde será criado ou movido',
  12.                     )
  13.     );
  14.  
  15.     $oGetopt->parse();
  16.  
  17.     //instancia o request passando as opções da linha de comando
  18.     $oRequest = new Controller_Request_Cli();
  19.     $oRequest->addGetopt($oGetopt);
  20.  
  21.     //carrega arquivo onde estão os mapeamentos dos comandos -> action
  22.     $oConfigRoutes = new Zend_Config_Ini(APPLICATION_CONFIG_DIR . DIRECTORY_SEPARATOR . 'routes.ini', 'production');
  23.  
  24.     $oFrontController = Zend_Controller_Front::getInstance();
  25.     $oFrontController->setControllerDirectory(APPLICATION_CONTROLLERS_DIR);
  26.  
  27.     //seta a classe Controller_Request_Cli
  28.     $oFrontController->setRequest($oRequest);
  29.  
  30.     //seta a classe Zend_Controller_Response_Cli
  31.     $oFrontController->setResponse(new Zend_Controller_Response_Cli());
  32.  
  33.     //seta a classe Controller_Router_Rewrite_Cli
  34.     $oFrontController->setRouter(new Controller_Router_Rewrite_Cli);
  35.  
  36.     //desabilita a view (default)
  37.     $oFrontController->setParam('noViewRenderer', true);
  38.  
  39.     //adiciona os mapeamentos do routes.ini para o router
  40.     $oFrontController->getRouter()->addConfig($oConfigRoutes, 'routes');
  41.  
  42.     $oFrontController->throwExceptions(true);
  43.     $oFrontController->dispatch();
  44.  
  45.     // caso não encontre o controller
  46. } catch (Zend_Controller_Dispatcher_Exception $oException) {
  47.     print "Comando não encontrado\r\n\r\n";
  48.     print $opts->getUsageMessage();
  49.     exit(1);
  50.  
  51.     // caso ocorra algum erro de parser na linha de comando
  52. } catch (Zend_Console_Getopt_Exception $oException) {
  53.     print $oException->getUsageMessage();
  54.     exit;
  55.  
  56.     // exeção não esperada
  57. } catch (Exception $oException) {
  58.     print $oException->getMessage();
  59.     exit(1);
  60. }

Então criei uma instância da classe Zend_Controller_Front passando as classes criadas anteriormente, neste arquivo também criei uma instancia da classe Zend_Console_Getopt passando as regras da linha de comando.

Arquivos do Exemplo

Para executar experimentem alguns comandos do tipo:

$ php application.php -c delete -f teste.txt
$ php application.php -c create -t teste.txt
$ php application.php -c move -f teste.txt -t teste1.txt

Em caso de dúvidas envien um comentário, estou a disposição.

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 »