Julho 28th 2007 05:18 pm
Zend Framework - MVC na linha de comando
PHP:
-
<?php
-
-
require_once('init.php');
-
-
try {
-
//cria as regras da linha de comando
-
$oGetopt = new Zend_Console_Getopt (
-
array (
-
'command|c=s' => '<move|delete|create> Comando obrigatório para a execução',
-
'from|f-s' => 'Origem do arquivo que será movido ou deletado',
-
'to|t-s' => 'Destido do arquivo onde será criado ou movido',
-
)
-
);
-
-
$oGetopt->parse();
-
-
//instancia o request passando as opções da linha de comando
-
$oRequest = new Controller_Request_Cli();
-
$oRequest->addGetopt($oGetopt);
-
-
//carrega arquivo onde estão os mapeamentos dos comandos -> action
-
$oConfigRoutes = new Zend_Config_Ini(APPLICATION_CONFIG_DIR . DIRECTORY_SEPARATOR . 'routes.ini', 'production');
-
-
$oFrontController = Zend_Controller_Front::getInstance();
-
$oFrontController->setControllerDirectory(APPLICATION_CONTROLLERS_DIR);
-
-
//seta a classe Controller_Request_Cli
-
$oFrontController->setRequest($oRequest);
-
-
//seta a classe Zend_Controller_Response_Cli
-
$oFrontController->setResponse(new Zend_Controller_Response_Cli());
-
-
//seta a classe Controller_Router_Rewrite_Cli
-
$oFrontController->setRouter(new Controller_Router_Rewrite_Cli);
-
-
//desabilita a view (default)
-
$oFrontController->setParam('noViewRenderer', true);
-
-
//adiciona os mapeamentos do routes.ini para o router
-
$oFrontController->getRouter()->addConfig($oConfigRoutes, 'routes');
-
-
$oFrontController->throwExceptions(true);
-
$oFrontController->dispatch();
-
-
// caso não encontre o controller
-
} catch (Zend_Controller_Dispatcher_Exception $oException) {
-
print "Comando não encontrado\r\n\r\n";
-
print $opts->getUsageMessage();
-
exit(1);
-
-
// caso ocorra algum erro de parser na linha de comando
-
} catch (Zend_Console_Getopt_Exception $oException) {
-
print $oException->getUsageMessage();
-
exit;
-
-
// exeção não esperada
-
} catch (Exception $oException) {
-
print $oException->getMessage();
-
exit(1);
-
}
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.
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.
No Comments yet »













