Работа с консолью в Yii

Продолжаем препарировать Yii. Создадим консольное приложение на платформе фреймворка. Но сначала сделаем отступление. Общение с разработчиками показывает, что многие не понимают важность и мощь использования командной строки в разработке.

Внесу ясность, командная строка — это неотъемлемый инструмент программиста. Пакеты и приложения, которые устанавливаются с помощью Composer, используют командную строку. Тестирование, тоже осуществляется в консоли. О том, что это такое и для чего оно нужно, мы поговорим в отдельной публикации.

Вернемся к нашему приложению. Внесем небольшие правки.

Создадим в корне проекта директорию config, перенесем в нее файл config.php. Отредактируем его, заменим

на

и

на

Также внесем изменения в файл index.php из директории web, изменим

на

В директории config создадим конфигурационный файл для консольного приложения console.php, по содержанию он очень похож на config.php.

Теперь создадим точку входа для консольного приложения, для этого в корне проекта создадим файл yii, он похож на index.php из директории web. Единственное отличие, он использует конфигурационные файлы для консольного приложения и использует переменные окружения сервера, но в Windows это не сработает. Отдельно мы не будем писать для этого скрипт, а просто в запросе будем использовать путь к команде.

Теперь проверим наше приложение, выполним в командной строке:

Вы увидите все консольные приложения, идущие из коробки в Yii. Миграции, нам еще пригодятся. Теперь создадим директорию commands, в корне проекта. В ней мы будем хранить контролеры. И первый, который мы создадим, будет HelloController.php. Обратите внимания, что контролеры в консоли наследуются от другого класса Controller, в отличии от тех, которые мы использовали в браузерной версии.

Выполним следующую команду и насладимся результатом:

а если мы еще передадим параметр, то получим вот такую штуку:

Исходники: https://github.com/nvrsk-yii2/app

Об авторе

Дмитрий Ли

Катаюсь на велосипеде, фотографирую. Люблю RESTful и Linux, пишу для web, в основном на PHP.

Просмотреть все сообщения

Оставить комментарий

avatar
  Подписаться  
Уведомление о