В процессе разработки консольные приложения в основном используются для выполнения вторичных или фоновых задач, таких как генерация кода, компиляция поискового индекса, отправка сообщений электронной почты и т.д. Yii предоставляет инструмент для разработки консольных приложений, придерживаясь объектно-ориентированного подхода.
Каждая консольная задача представлена в Yii как команда, а экземпляр консольного приложения используется для направления запроса из командной строки соответствующей команде. Экземпляр приложения создается во входном скрипте. Для выполнения консольной задачи необходимо просто запустить соответствующую команду в командной строке:
php entryScript.php CommandName Param0 Param1 ...
где CommandName
соответствует названию команды и нечувствителен к регистру, а
Param0
, Param1
и т.д. - параметры, передаваемые экземпляру команды.
Входной скрипт консольного приложения, как правило, мало чем отличается от входного скрипта веб-приложения и обычно выглядит следующим образом:
defined('YII_DEBUG') or define('YII_DEBUG',true);
// подключаем файл инициализации Yii
require_once('path/to/yii/framework/yii.php');
// создаем и запускаем экземпляр приложения
$configFile='path/to/config/file.php';
Yii::createConsoleApplication($configFile)->run();
Далее создаем классы команд, наследуемых от класса CConsoleCommand.
Название каждого класса команды должно соответствовать названию команды с добавлением
Command
. Например, чтобы создать команду email
, нужно написать класс EmailCommand
.
Все файлы классов команд должны находиться в подпапке commands
базовой директории приложения.
Подсказка: Конфигурируя CConsoleApplication::commandMap, можно при желании изменить порядок именования и расположения классов команд.
Написание класса команды, как правило, заключается в реализации метода CConsoleCommand::run, которому в виде массива передаются параметры командной строки:
class EmailCommand extends CConsoleCommand
{
public function run($args)
{
$receiver=$args[0];
// отправляем сообщение получателю $receiver
}
}
В любой момент времени в команде через метод Yii::app()
можно обратиться к экземпляру приложения.
Консольное приложение также, как и веб-приложение, можно конфигурировать. Например, мы можем
настроить компонент приложения db
для доступа к базе данных. Конфигурация, как правило, оформляется
в виде РНР-файла и передается конструктору класса консольного приложения
(или методу createConsoleApplication во входном скрипте).
yiic
¶Мы использовали утилиту yiic
для создания первого Yii-приложения.
Эта утилита на самом деле является консольным приложение с входным скриптом framework/yiic.php
.
Ее использование позволяет выполнить ряд задач: создание каркаса веб-приложения, генерация классов контроллеров и моделей,
генерация кода, необходимого для операций CRUD, получение списка сообщений, которые необходимо перевести и т.д.
Можно совершенствовать утилиту, добавляя собственные команды. Для этого вначале необходимо
создать каркас приложения с использованием команды yiic webapp
, как описано в разделе Создание первого Yii-приложения. Эта команда создаст два файла в папке protected
:
yiic
и yiic.bat
- локальные копии утилиты yiic
, сгенерированные специально для создаваемого веб-приложения.
Теперь мы можем создавать собственные команды в папке protected/commands
. При запуске локальной версии утилиты мы
увидим, что к стандартному набору команд добавились созданные нами. Кроме того, можно создать команды, которые
будут доступны при использовании yiic shell
. Для этого файлы классов команд нужно просто поместить в папку
protected/commands/shell
.
Signup or Login in order to comment.