Це дасть вам перелік доступних команд, коли ви запускаєте його без будь-яких додаткових параметрів:
![Виконання команди ./yii для відображення довідки](images/tutorial-console-help.png)
Як видно на знімку екрану, Yii має вже визначений набір команд, які є доступними "з коробки":
- [[yii\console\controllers\AssetController|AssetController]] - Дозволяє вам комбінувати та стискати ваші файли JavaScript і CSS.
Ви можете дізнатись більше про цю команду у розділі [Ресурси](structure-assets.md#using-the-asset-command).
- [[yii\console\controllers\CacheController|CacheController]] - Дозволяє вам оновити кеш додатка.
- [[yii\console\controllers\FixtureController|FixtureController]] - Керує завантаженням та вивантаженням даних фікстур для цілей тестування.
Ця команда описана більш детально у [розділі тестування про фікстури](test-fixtures.md#managing-fixtures).
- [[yii\console\controllers\HelpController|HelpController]] - Надає довідкову інформацію про консольні команди, ця команда використовується за замовчуванням
та виводить те, що ви побачили у вищенаведеному виводі.
- [[yii\console\controllers\MessageController|MessageController]] - Здобуває повідомлення для перекладу з файлів коду.
Щоб дізнатись більше про цю команду, будь ласка, зверніться до розділу [Інтернаціоналізація](tutorial-i18n.md#message-command).
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
```
Цей скрипт буде створено як частину вашого додатку; ви можете вільно змінювати його для відповідності вашим потребам. Значення константи `YII_DEBUG` може бути встановлено у `false`,
визначаються одна або більше дій, які відповідають під-командам контролера. Всередині кожної дії міститься код, який реалізує відповідні завдання для окремої під-команди.
Якщо маршрут, запропонований при виконанні, не містить ідентифікатора дії, то буде виконана стандартна дія (так само як у веб-контролері).
### Опції
Через перевизначення методу [[yii\console\Controller::options()]] ви можете визначити опції, які будуть доступними
для консольної команди (controller/actionID). Метод повинен повертати перелік публічних властивостей класу контролера.
При виконанні команди можна задати значення опції, використовуючи синтаксис `--OptionName=OptionValue`.
Це призначить значення `OptionValue` властивості `OptionName` класу контролера.
Якщо значення за замовчуванням для опції є масивом і ви задаєте цю опцію під час виконання команди,
то значення опції буде перетворене у масив розділенням вхідного текстового рядка за комами.
### Аргументи
Окрім опцій, команда також може приймати аргументи. Аргументи будуть передані як параметри до методу дії
відповідно до запитуваної під-команди. Перший аргумент відповідає першому параметру, другий
відповідає другому і т. д. Якщо при виклику команди надано не достатньо аргументів, то відповідним параметрам
будуть призначені типові значення, якщо попередньо визначені. Якщо типове значення не визначено і не передано значення під час виконання, то команда буде завершена з помилкою.
Ви можете використовувати вказівку типу `array` для позначення аргументу, з яким потрібно обходитись як з масивом.
Масив буде згенерований розділенням вхідного текстового рядку за комами.
Наступний приклад показує як оголошувати аргументи:
```php
class ExampleController extends \yii\console\Controller
{
// Команда "yii example/create test" викличе "actionCreate('test')"
public function actionCreate($name) { ... }
// Команда "yii example/index city" викличе "actionIndex('city', 'name')"
// Команда "yii example/index city id" викличе "actionIndex('city', 'id')"
public function actionIndex($category, $order = 'name') { ... }
// Команда "yii example/add test" викличе "actionAdd(['test'])"
// Команда "yii example/add test1,test2" викличе "actionAdd(['test1', 'test2'])"
public function actionAdd(array $name) { ... }
}
```
### Код виходу
Використання кодів виходу є найкращою практикою для розробки консольного додатку. Прийнято, якщо команда повертає `0`, це означає, що
все добре. Якщо команда повертає число більше за нуль, це вважається показником помилки. Повернуте число буде кодом
помилки, яке потенційно може використовуватись для пошуку деталей про помилку.
Наприклад, число `1`, як правило, може означати невідому помилку, а усі коди вище можуть бути зарезервовані для специфічних випадків: помилки вводу, відсутні файли і так далі.
Для того, щоб ваша консольна команда повертала код виходу, просто поверніть ціле число з методу дії
контролера:
```php
public function actionIndex()
{
if (/* деяка проблема */) {
echo "A problem occured!\n";
return 1;
}
// щось виконується
return 0;
}
```
Є декілька попередньо визначених констант, які ви можете використовувати:
-`Controller::EXIT_CODE_NORMAL` зі значенням `0`;
-`Controller::EXIT_CODE_ERROR` зі значенням `1`.
Хорошою практикою є визначення значущих констант для вашого контролера у випадку, якщо ви маєте більше типів помилок.
### Форматування та кольори
Консоль Yii підтримує форматований вивід, який автоматично стане не форматованим, якщо він не підтримується
терміналом, в якому виконується команда.
Виводити форматовані текстові рядки просто. Ось як вивести деякий жирний текст:
```php
$this->stdout("Hello?\n", Console::BOLD);
```
Якщо необхідно побудувати текстовий рядок, динамічно комбінуючи декілька стилів, то найкраще використовувати `ansiFormat`: