Skip to content
This repository has been archived by the owner on Jun 4, 2021. It is now read-only.

Core_Controller_Action_Cli

Alexander Khaylo edited this page Nov 1, 2013 · 1 revision

Пример контроллера

Простой скрипт, использующий 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

Example

Как с этим работать

Сразу же после запуска выводится приветственное сообщение при помощи метода $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
Clone this wiki locally