Консольні команди - спеціальні теми - повне керівництво по yii 2

Крім багатих можливостей для побудови веб додатків, Yii також має повноцінну підтримку консольних додатків, які зазвичай використовуються для створення фонових і службових завдань, що підтримують сайт.

Структура консольних додатків дуже схожа на структуру веб додатки. Вона складається з одного і більше класів yii \ console \ Controller. які часто називають командами в консольної середовищі. Кожен контролер може мати одне або більше дій, як і веб контролери.

В обох шаблонах проектів вже є консольний додаток. Ви можете запустити його, викликавши скрипт yii, який знаходиться в основний директорії вашого застосування. Ви отримаєте список доступних команд, якщо викличете його без параметрів:

Як ви можете бачити на скріншоті, в Yii уже визначений набір доступних за замовчуванням команд:

Використання

Ви можете запустити дію консольного контролера, використовуючи наступний синтаксис:

У наведеному вище прикладі, відноситься до дії контролера. Параметри будуть підставлятися в властивості класу і в аргументи методу дії.

Для прикладу, MigrateController :: actionUp () з MigrateController :: $ migrationTable установкою migrations і лімітом в 5 міграцій може бути викликане наступним чином:

Note: При використанні в консолі *. не забудьте помістити її в лапки "*" щоб уникнути її інтерпретації і заміни на всі імена файлів в даній директорії.

вхідний скрипт

Вхідний скрипт консольного застосування - це подібність файлу index.php. використовуваного в веб додатку. Вхідний скрипт консолі, як правило, називається yii і розташовується в основний директорії додатку. Він містить код схожий на наступне:

Цей скрипт буде створений як частина вашої програми; ви можете його редагувати, якщо вам це необхідно. YII_DEBUG можете встановити в false якщо вам не потрібно бачити зневаджувальної при помилку, і / або якщо ви хочете поліпшити загальну продуктивність. В обох шаблонах додатка, у вхідному скрипті додатки налагодження включена за замовчуванням для забезпечення більш дружнього до розробника оточення.

Налаштування

Як видно з наведеного вище коду, консольний додаток використовує свій власний файл конфігурації, названий console.php. У цьому файлі ви повинні зробити налаштування різних компонентів програми та властивостей консольного застосування.

Якщо ваше веб і консольний додаток має багато спільних параметрів конфігурації, ви можете виділити загальну частину в окремий файл, і включити його в обидва файли конфігурації (веб і консоль). Ви можете подивитися приклад в "просунутому" шаблоні проекту.

Tip: Іноді, вам може знадобитися запустити консольную команду використовуючи конфігурацію, відмінну від тієї, що зазначено у вхідному скрипті. Для прикладу, ви можете використовувати команду yii migrate для поновлення тестової бази даних, яка налаштовується для кожного окремого набору тестів. Для зміни файлу конфігурації, просто вкажіть свій конфігураційний файл через опцію appconfig при запуску команди:

Автодоповнення консольних команд

Автодоповнення аргументів команд є корисною можливістю при роботі в командному рядку. Починаючи з версії 2.0.11, команда ./yii підтримує автодоповнення для Bash і ZSH.

Автодоповнення для Bash

Переконайтеся, що кошти автодоповнення для Bash встановлені. У більшості дистрибутивів вони поставляються за умовчанням.

Збережіть скрипт для автодоповнення в директорію /etc/bash_completion.d/:

Для тимчасового використання, ви можете зберегти файл в довільну директорію і підключити його на час роботи сесії, викликавши команду source yii.

Якщо скрипт був встановлений глобально, вам буде потрібно перезапустити термінал або виконати команду source

/.bashrc для активації автодоповнення.

Зверніться до інструкції по автодоповнення в Bash щоб дізнатися про інші способи підключення скриптів автодоповнення в ваше оточення.

Автодоповнення для ZSH

Збережіть скрипт автодоповнення в директорію для скриптів автодоповнення. наприклад,

Додайте цю директорію в змінну середовища $ fpath. наприклад додавши в кінець

/.zshrc наступний рядок:

Переконайтеся, що програма compinit запущена. Якщо це не так - додайте в

/.zshrc наступні рядки:

А після перезапуску ваш термінал, або виконайте команду

Створення ваших власних команд

Консольний контролер і дію

Консольна команда визначається як клас контролера розширює yii \ console \ Controller. У класі контролера, ви визначаєте одне або кілька дій, які відповідають суб-командам контролера. У кожній дії ви пишете код, який реалізує відповідні даної суб-команді завдання.

При запуску команди, вам необхідно вказати маршрут до дії. Наприклад, маршрут migrate / create викликає суб-команду, яка відповідає методу MigrateController :: actionCreate (). Якщо маршрут, запропонований при виклику команди, не містить вказівки ідентифікатора дії, буде викликано дію за замовчуванням (так само як і в веб додатку).

Опції

Для перевизначення yii \ console \ Controller :: options () методу, ви можете вказати опції, які доступні в консольної команді (controller / actionID). Метод повинен повертати список публічних атрибутів класу. При запуску команди ви можете вказати значення опцій, використовуючи синтаксис --OptionName = OptionValue. Це зв'яже OptionValue з атрибутом OptionName класу контролера.

Якщо значення за замовчуванням опції - це масив, то при установці цієї опції, при виконанні команди, значення буде перетворено в масив шляхом поділу входить рядки по комам.

аргументи

Крім опцій, команда може отримувати аргументи. Аргументи будуть передані в якості параметрів в метод дії, відповідного запитаної суб-команді. Перший аргумент відповідає першому параметру, другий відповідно другого, і так далі. Якщо переданих аргументів при виклику команди буде недостатньо, то параметрами будуть призначені за замовчуванням, якщо вони визначені. Якщо значення за замовчуванням не визначені, і не були передані, команда завершить виконання з помилкою.

Ви можете використовувати вказівку типу array. щоб вказати, що аргумент повинен розглядатися як масив. Масив буде згенеровано шляхом поділу вхідного рядка по комам.

псевдоніми опцій

Починаючи з версії 2.0.8 в класі консольної команди доступний метод yii \ console \ Controller :: optionAliases (). дозволяє додавати псевдоніми для опцій.

Для того, щоб задати псевдонім, перекрийте метод yii \ console \ Controller :: optionAliases () в вашому контролері:

Тепер для запуску команди можна використовувати наступний синтаксис:

Наступний приклад показує як описувати аргументи:

код повернення

При розробці консольного застосування прийнято використовувати код повернення. Прийнято, код 0 означає, що команда виконалася вдало. Якщо команда повернула код більше нуля, то це говорить про помилку. Номер, який був повернутий при помилку, потенційно може бути використаний для пошуку більш детальної інформації про помилку. Для прикладу 1 може вказувати на невідому помилку, а всі коди вище можуть бути зарезервовані під специфічні помилки: помилки введення, пошкоджені файли, і щось інше.

Для того, щоб ваша консольна команда повертала код повернення, просто поверніть ціле число в методі дії контролера:

Є кілька зумовлених констант, які ви можете використовувати:

Хороша практика, визначати значущі для вашого контролера константи в разі, якщо ви використовуєте більше типів помилок.

Форматування і кольору

Консоль Yii підтримує форматування виводу, який автоматично деградує до НЕ форматированного, якщо це не підтримується в терміналі, де запускається команда.

Виведення тексту рядків простий. Ось як можна вивести деякий жирний текст:

Якщо вам потрібно зібрати рядок динамічно об'єднуючи кілька стилів, краще використовувати ansiFormat ():

Схожі статті