yii interactive console
PHP
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dev
src
tests ns LTDBeget Jul 24, 2016
.gitignore
README.md
RELEASE_NOTES.md
composer.json Allow to use php-7.1 and php-7.2 Feb 15, 2018
composer.lock Allow to use php-7.1 and php-7.2 Feb 15, 2018
phpunit.xml init Jun 30, 2016

README.md

#Yiiic - интерактивная консоль для Yii2 Интерактивная yiiic консоль реализует умный автокомплит и контекстный воркфлоу.

  1. Установка
  2. Интеграция в проект и запуск
  3. Умный автокомплит
  4. Служебные комманды
  5. Конфигурация
  6. События

##Установка composer require ltd-beget/yiiic

##Интеграция в проект

Добавить yiiic компонент в конфиг консольного приложения

$application = new yii\console\Application([
    ...
    'components' => [
        'yiiic' => [
			'class' => \LTDBeget\Yiiic\Yiiic::class
		]
    ]
]);

Отнаследовать консольный конроллер как точку входа в интерактивный режим от \LTDBeget\Yiiic\YiiicController

use yii\console\Controller;

class YiiicController extends \LTDBeget\Yiiic\YiiicController
{

}

Далее запуск

yii yiiic [... options]

Каждая команда выполняется в отдельном процессе

##Умный автокомплит При работе с консолью, нажатие TAB вызывает автоподсказку возможных контроллеров/экшенов/опций. При реализации интерфейса ArgsCompleterInterface возможен комплит по аргументам. Автокомплит работает по контексту, то есть если вы ввели migrate [press TAB] и нажали таб, то получите список экшенов для migrate.

##Служебные комманды

  • c - перейти в контекст
  • h - помощь
  • q - выход

Комманды можно передавать в любом месте, следующие вызовы равнозначны

migrate create c
c migrate create

Для запуска комманды без контекста используется префикс /

##Конфигурация Конфигурация в порядке возрастания приоритета:

  • default - дефолтный пресет
  • component config
  • cli config (путь к конфигу при запуске yiiic режима (yii yiiic --config=custom/config/path) )
  • cli option (значение конкретного опшена, список доступных)

Дефолтный пресет


[
	// внешние зависимости
	'entities' => [
	// $options полностью собранный массив настроек(после мержа всех источников)
	// apiReflector должен имплементить LTDBeget\Yiiic\ApiReflectorInterface
	   'apiReflector' => function($options) {
	        return new ApiReflector($options['ignore']);
	    }
	],
	'options' => [
		// не выводить в хелпе
	    'ignore' => ['yiiic', 'help'],
	    'prompt' => 'yiiic',
	    'show_help' => Conf::SHOW_HELP_ONCE,
	    // если вылезет exception
	    'show_trace' => false,
	    // путь к скрипту консольного приложения
	    'entry_script' => Conf::ENTRY_SCRIPT_CURRENT,
	    'commands' => [
	        'context' => 'c',
	        'quit' => 'q',
	        'help' => 'h'
	    ],
	    'without_context_prefix' => '/',
	    // высота в строках хелпа, если не будет
	    // помещаться, рассчитается так чтоб влезло
	    'height_help' => 5,
	    // стили для стильных
	    'style' => [
	        'prompt' => [Console::FG_GREEN, Console::BOLD],
	        'welcome' => [Console::FG_YELLOW, Console::BOLD],
	        'bye' => [Console::FG_YELLOW, Console::BOLD],
	        'notice' => [Console::FG_YELLOW, Console::BOLD],
	        'error' => [Console::BG_RED],
	        'help' => [
	            'title' => [Console::FG_YELLOW, Console::UNDERLINE],
	            'content' => [Console::FG_YELLOW, Console::ITALIC]
	        ],
	        'result' => [
	            'border' => [Console::FG_CYAN],
	            'content' => [Console::FG_CYAN],
	            'separator' => '=' 
	        ]
	    ]
	]  
];

###Cli options --trace - options.show_trace

--script - options.entry_script

##События

  • Yiiic::EVENT_BEFORE_RUN_ACTION
  • Yiiic::EVENT_AFTER_RUN_ACTION

Подписка либо через конфиг компонента, либо имплементить YiiicController::prepareYiiic()

class YiiicController extends \LTDBeget\Yiiic\YiiicController
{

    protected function prepareYiiic(Yiiic $yiiic)
    {
        $yiiic->on(Yiiic::EVENT_BEFORE_RUN_ACTION, 'func');
    }

}