-
Notifications
You must be signed in to change notification settings - Fork 9
Core_Controller_Action_Cli
Простой скрипт, использующий Core_Controller_Action_Cli для работы с консолью:
<?php
class Tests_CliController extends Core_Controller_Action_Cli
{
public function indexAction()
{
$this->printMessage('ZFCore CLI welcomes you!', Core_Controller_Action_Cli::SUCCESS_MESSAGE);
$this->writeLine('Please enter your name:');
$name = $this->readLine();
$this->printMessage('Hi, ' . $name . '!', Core_Controller_Action_Cli::INFO_MESSAGE);
}
}
Для корректной маршрутизации при вызове скрипта из консоли используется Core_Controller_Router_Cli, который прописывается в Bootstrap.php приложения:
<?php
//...
protected function _initCliRouter()
{
if (PHP_SAPI === 'cli' && !defined('PHPUNIT')) {
$this->bootstrap('frontController');
// @var Zend_Controller_Front $frontController
$frontController = $this->getResource('frontController');
$frontController->setRouter(new Core_Controller_Router_Cli());
}
}
Для запуска indexAction из Tests_CliController необходимо в консоли выполнить:
$> php public/index.php tests cli
или
$> php public/index.php tests cli index
Сразу же после запуска выводится приветственное сообщение при помощи метода $this->printMessage("Текст", "Тип цвета", "Флаг вывода даты, можно использовать для логов"):
ZFCore CLI welcomes you!
Для простого вывода текста используется $this->writeLine("Please enter your name:"):
Please enter your name:
Для того чтобы получить вводимую строку, используется $this->readLine(). К примеру, если нужно получить имя пользователя, а потом его вывести:
<?php
$name = $this->readLine();
$this->printMessage('Hi, ' . $name . '!', Core_Controller_Action_Cli::INFO_MESSAGE);
Также поддерживается передача обычных параметров:
$> php public/index.php tests cli index param=123
Которые можно получить через:
<?php
$this->getRequest()->getParam('param');
Для включения цветной подсветки выводимых сообщений в application.yaml необходимо установить colorize в true:
registry:
console:
colorize: true