Класс Shell
Базовый класс для утилит командной строки для автоматизации задач программиста.
Аналогичен Cake\Controller\Controller в командной строке.
Константы
-
intCODE_ERROR1
Значение по умолчанию для кода ошибки
-
intCODE_SUCCESS0
Значение по умолчанию для кода успеха
-
intNORMALConsoleIo::NORMAL
Константа вывода для создания обычных оболочек.
-
intQUIETConsoleIo::QUIET
Константы вывода для создания бесшумных оболочек.
-
intVERBOSEConsoleIo::VERBOSE
Константа вывода для создания подробных оболочек.
Краткое описание свойств
- $OptionParser public
Cake\Console\ConsoleOptionParserЭкземпляр ConsoleOptionParser, настроенный для этого класса.
- $Tasks public
Cake\Console\TaskRegistryКоллекция задач для команды, используемая для создания задач.
- $_io protected
Cake\Console\ConsoleIoЭкземпляр ConsoleIo.
- $_modelFactories protected
(callableCake\Datasource\Locator\LocatorInterface)[]Список переопределённых функций фабрики моделей.
- $_modelType protected
stringТип модели для использования.
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullЭкземпляр локатора таблиц.
- $_taskMap protected
arrayНормализованная карта задач.
- $args public
arrayСодержит аргументы, разобранные из командной строки.
- $command public
string|nullКоманда (метод/задача), которая выполняется.
- $interactive public
boolЕсли true, скрипт запросит разрешение на выполнение действий.
- $modelClass protected
string|nullИмя основного класса модели этого объекта. Должно быть в множественном числе. CakePHP не будет склонять имя.
- $name public
stringИмя оболочки в camelized формате.
- $params public
arrayСодержит переключатели команд, разобранные из командной строки.
- $plugin public
stringИмя плагина, к которому относится оболочка. Автоматически устанавливается ShellDispatcher при создании оболочки.
- $rootName protected
stringКорневое имя команды, используемое при генерации вывода справки.
- $taskNames public
arrayСодержит загруженные задачи
- $tasks public
array|boolСодержит задачи для загрузки и инициализации
Краткое описание методов
-
__construct() public
Создаёт экземпляр Shell.
-
__debugInfo() public
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
-
__get() public
Перегрузка get для ленивого построения задач
-
_displayHelp() protected
Отображает справку в правильном формате
-
_mergeProperty() protected
Объединяет одно свойство со значениями, объявленными во всех родительских классах.
-
_mergePropertyData() protected
Объединяет каждый из ключей в свойстве вместе.
-
_mergeVars() protected
Объединяет список $properties со всеми родительскими классами текущего класса.
-
_setModelClass() protected
Устанавливает свойство modelClass на основе соглашений.
-
_setOutputLevel() protected
Устанавливает уровень вывода на основе параметров.
-
_stop() protected
Остановить выполнение текущего скрипта. Вызывает StopException, чтобы попытаться остановить выполнение.
-
_validateTasks() protected
Проверяет, доступны ли задачи в карте задач.
-
_welcome() protected
Отображает заголовок для оболочки.
-
abort() public
Отображает отформатированное сообщение об ошибке и завершает приложение с кодом ошибки.
-
clear() public
Очистить консоль
-
createFile() public
Создаёт файл по заданному пути
-
dispatchShell() public
Передать команду в другую оболочку. Аналогично Object::requestAction(), но предназначено для запуска оболочек из других оболочек.
-
err() public
Выводит одно или несколько сообщений об ошибках в stderr. Если нет параметров, выводит только символ новой строки.
-
getIo() public
Получить объект io для этой оболочки.
-
getModelType() public
Получить тип модели, который будет использоваться этим классом
-
getOptionParser() public
Получает экземпляр обработчика параметров и настраивает его.
-
getTableLocator() public
Получить локатор таблицы.
-
hasMethod() public
Проверить, есть ли у этой оболочки вызываемый метод с заданным именем.
-
hasTask() public
Проверить, есть ли у этой оболочки задача с заданным именем.
-
helper() public
Отобразить помощника консоли
-
hr() public
Выводит последовательность символов минус в стандартный вывод, действует как визуальный разделитель.
-
in() public
Запрашивает у пользователя ввод и возвращает его.
-
info() public
Удобный метод для out(), который оборачивает сообщение тегом
-
initialize() public
Инициализирует Shell, выступает в качестве конструктора для подклассов, позволяет настроить задачи до выполнения оболочки
-
loadModel() public
Загружает и создаёт объекты репозитория, необходимые для этого объекта.
-
loadTasks() public
Загружает задачи, определённые в public $tasks
-
log() public
Удобный метод для записи сообщения в журнал. См. Log::write() для получения дополнительной информации о записи в журналы.
-
main() public @method
Основной метод входа для оболочки.
-
modelFactory() public
Переопределить существующую вызываемую функцию для генерации репозиториев заданного типа.
-
nl() public
Возвращает одну или несколько последовательностей символов новой строки.
-
out() public
Выводит одно или несколько сообщений в stdout. Если нет параметров, выводит только символ новой строки.
-
param() public
Безопасно получить значения в $this->params.
-
parseDispatchArguments() public
Парсит аргументы для метода dispatchShell().
-
quiet() public
Вывод на всех уровнях.
-
runCommand() public
Выполняет оболочку с предоставленным argv.
-
setIo() public
Установить объект io для этой оболочки.
-
setModelType() public
Установить тип модели, который будет использоваться этим классом
-
setRootName() public
Установить имя корневой команды для вывода справки.
-
setTableLocator() public
Установить локатор таблицы.
-
shortPath() public
Делает абсолютный путь к файлу более читаемым
-
startup() public
Запускает оболочку и отображает приветственное сообщение. Позволяет проверять и настраивать перед выполнением команды или основного выполнения
-
success() public
Удобный метод для out(), который оборачивает сообщение тегом
-
verbose() public
Вывод на уровне подробности.
-
warn() public
Удобный метод для err(), который оборачивает сообщение тегом
-
wrapText() public
Оборачивает блок текста. Позволяет установить ширину и отступы блока текста.
Подробное описание методов
__construct() public
__construct(Cake\Console\ConsoleIo|null $io = null, Cake\ORM\Locator\LocatorInterface|null $locator = null)
Создаёт экземпляр Shell.
Параметры
Cake\Console\ConsoleIo|null$io optionalЭкземпляр io.
Cake\ORM\Locator\LocatorInterface|null$locator optionalЭкземпляр локатора таблиц.
Ссылки
__debugInfo() public
__debugInfo(): array
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
array__get() public
__get(string $name): Cake\Console\Shell
Перегрузка get для ленивого создания задач.
Параметры
string$nameЗадача для получения.
Возвращает
Cake\Console\Shell_displayHelp() protected
_displayHelp(string|null $command = null): int|null
Отображает справку в правильном формате.
Параметры
string|null$command optionalКоманда для получения справки.
Возвращает
int|null_mergeProperty() protected
_mergeProperty(string $property, array $parentClasses, array $options): void
Объединяет одно свойство со значениями, объявленными во всех родительских классах.
Параметры
string$propertyИмя объединяемого свойства.
array$parentClassesМассив классов, которые нужно объединить.
array$optionsПараметры для объединения свойства, см. _mergeVars()
Возвращает
void_mergePropertyData() protected
_mergePropertyData(array $current, array $parent, bool $isAssoc): mixed
Объединяет каждый из ключей в свойстве.
Параметры
array$currentТекущее объединённое значение.
array$parentЗначение родительского класса.
bool$isAssocОпределяет, будет ли объединение выполняться в ассоциативном режиме.
Возвращает
mixed_mergeVars() protected
_mergeVars(string[] $properties, array $options = []): void
Объединяет список $properties со всеми родительскими классами текущего класса.
Параметры:
associative- Список свойств, которые должны обрабатываться как ассоциативные массивы. Свойства в этом списке будут переданы через Hash::normalize() перед объединением.
Параметры
string[]$propertiesМассив свойств и стратегии их объединения.
array$options optionalПараметры, используемые при объединении свойств.
Возвращает
void_setModelClass() protected
_setModelClass(string $name): void
Устанавливает свойство modelClass на основе конвенций.
Если свойство уже задано, оно не будет перезаписано.
Параметры
string$nameИмя класса.
Возвращает
void_setOutputLevel() protected
_setOutputLevel(): void
Устанавливает уровень вывода на основе параметров.
Это перенастраивает уровень вывода для out() и настроенный логгирование stdout/stderr.
Возвращает
void_stop() protected
_stop(int $status = self::CODE_SUCCESS): void
Останавливает выполнение текущего скрипта. Вызывает StopException для попытки остановки выполнения.
Параметры
int$status optionalсм. https://secure.php.net/exit для значений
Возвращает
voidИсключения
Cake\Console\Exception\StopException_validateTasks() protected
_validateTasks(): void
Проверяет, что задачи в карте задач на самом деле доступны.
Возвращает
voidИсключения
RuntimeException_welcome() protected
_welcome(): void
Отображает заголовок для оболочки.
Возвращает
voidabort() public
abort(string $message, int $exitCode = self::CODE_ERROR): void
Отображает отформатированное сообщение об ошибке и завершает приложение с кодом ошибки.
Параметры
string$messageСообщение об ошибке.
int$exitCode optionalКод выхода для задачи оболочки.
Возвращает
voidИсключения
Cake\Console\Exception\StopExceptionСсылки
clear() public
clear(): void
Очистить консоль.
Возвращает
voidСсылки
createFile() public
createFile(string $path, string $contents): bool
Создаёт файл по указанному пути.
Параметры
string$pathКуда поместить файл.
string$contentsСодержимое файла.
Возвращает
boolСсылки
dispatchShell() public
dispatchShell(): int
Перенаправляет команду в другую Shell. Аналогично Object::requestAction(), но предназначено для запуска оболочек из других оболочек.
Использование:
Со строковой командой:
return $this->dispatchShell('schema create DbAcl');Избегайте использования этой формы, если у вас есть строковые аргументы с пробелами. Вызванная оболочка будет неправильно запущена. Используйте эту форму только для простого перенаправления команд.
С массивом команд:
return $this->dispatchShell('schema', 'create', 'i18n', '--dry');С массивом, имеющим две пары ключ/значение:
commandможет принимать строку или массив. Представляет команду для перенаправленияextraможет принимать массив дополнительных параметров для передачи диспетчеру. Эти параметры будут доступны в свойствеparamвызываемойShell
return $this->dispatchShell([ 'command' => 'schema create DbAcl', 'extra' => ['param' => 'value'] ]);
или
return $this->dispatchShell([ 'command' => ['schema', 'create', 'DbAcl'], 'extra' => ['param' => 'value'] ]);
Возвращает
intСсылки
err() public
err(string|string[] $message, int $newlines = 1): int
Выводит одно или несколько сообщений об ошибках в stderr. Если параметры не переданы, выводит только новую строку.
Параметры
string|string[]$messageСтрока или массив строк для вывода.
int$newlines optionalКоличество новых строк для добавления.
Возвращает
intgetIo() public
getIo(): Cake\Console\ConsoleIo
Получить объект io для этой оболочки.
Возвращает
Cake\Console\ConsoleIogetModelType() public
getModelType(): string
Получить тип модели, который будет использоваться этим классом.
Возвращает
stringgetOptionParser() public
getOptionParser(): Cake\Console\ConsoleOptionParser
Получает экземпляр парсера опций и настраивает его.
Переопределяя этот метод, вы можете настроить ConsoleOptionParser перед его возвращением.
Возвращает
Cake\Console\ConsoleOptionParserСсылки
getTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Получает локатор таблиц.
Возвращает
Cake\ORM\Locator\LocatorInterfacehasMethod() public
hasMethod(string $name): bool
Проверяет, содержит ли данная оболочка вызываемый метод с заданным именем.
Параметры
-
string$name Имя метода для проверки.
Возвращает
boolСсылки
hasTask() public
hasTask(string $task): bool
Проверяет, содержит ли данная оболочка задачу с заданным именем.
Параметры
-
string$task Имя задачи для проверки.
Возвращает
boolСсылки
helper() public
helper(string $name, array $settings = []): Cake\Console\Helper
Отображает помощника консоли
Создает и отображает вывод для объекта помощника. Если объект помощника еще не загружен, он загружается и создается.
Параметры
-
string$name Имя помощника для отображения
-
array$settings optional Данные конфигурации для помощника.
Возвращает
Cake\Console\Helperhr() public
hr(int $newlines = 0, int $width = 63): void
Выводит серию символов «минус» в стандартный вывод, выполняя функцию визуального разделителя.
Параметры
-
int$newlines optional Количество символов новой строки для предварительного и последующего добавления
-
int$width optional Ширина строки, по умолчанию 63
Возвращает
voidСсылки
in() public
in(string $prompt, string|array|null $options = null, string|null $default = null): string|null
Запрашивает у пользователя ввод и возвращает его.
Параметры
-
string$prompt Текст запроса.
-
string|array|null$options optional Массив или строка опций.
-
string|null$default optional Значение ввода по умолчанию.
Возвращает
string|nullСсылки
info() public
info(string|string[] $message, int $newlines = 1, int $level = Shell::NORMAL): int|null
Удобный метод для out(), который оборачивает сообщение тегами
Параметры
-
string|string[]$message Строка или массив строк для вывода
-
int$newlines optional Количество символов новой строки для добавления
-
int$level optional Уровень вывода сообщения, см. выше.
Возвращает
int|nullСм. также
initialize() public
initialize(): void
Инициализирует оболочку, выступает в качестве конструктора для подклассов, позволяет настроить задачи перед выполнением оболочки
Возвращает
voidСсылки
loadModel() public
loadModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface
Загружает и создает объекты репозитория, необходимые для этого объекта
Обычно используется для загрузки объектов таблиц ORM по мере необходимости. Также может использоваться для загрузки других типов объектов репозитория, используемых вашим приложением.
Если поставщик репозитория не возвращает объект, будет выброшено исключение MissingModelException.
Параметры
-
string|null$modelClass optional Имя класса модели для загрузки. По умолчанию $this->modelClass. Имя может быть псевдонимом, например,
'Post'или полным именем класса, например,App\Model\Table\PostsTable::class.-
string|null$modelType optional Тип репозитория для загрузки. По умолчанию значение getModelType().
Возвращает
Cake\Datasource\RepositoryInterfaceИсключения
Cake\Datasource\Exception\MissingModelExceptionЕсли класс модели не найден.
UnexpectedValueExceptionЕсли аргумент $modelClass не указан, а свойство ModelAwareTrait::$modelClass пустое.
loadTasks() public
loadTasks(): true
Загружает задачи, определенные в public $tasks
Возвращает
truelog() public
log(string $message, int|string $level = LogLevel::ERROR, string|array $context = []): bool
Удобный метод для записи сообщения в журнал. См. Log::write() для получения дополнительной информации о записи в журналы.
Параметры
-
string$message Сообщение для журнала.
-
int|string$level optional Уровень ошибки.
-
string|array$context optional Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
boolmain() public @method
main(mixed ...$args): int|bool|null|void
Основной метод входа для оболочки.
Параметры
- ...$args
Возвращает
int|bool|null|voidmodelFactory() public
modelFactory(string $type, callableCake\Datasource\Locator\LocatorInterface $factory): void
Переопределите существующую вызываемую функцию для генерации репозиториев заданного типа.
Параметры
-
string$type Имя типа репозитория, для которого предназначена функция фабрики.
-
callableCake\Datasource\Locator\LocatorInterface$factory Функция фабрики, используемая для создания экземпляров.
Возвращает
voidnl() public
nl(int $multiplier = 1): string
Возвращает последовательность символов новой строки или нескольких символов новой строки.
Параметры
-
int$multiplier optional Количество раз, которое должна повторяться последовательность символов новой строки
Возвращает
stringСсылки
out() public
out(string|string[] $message, int $newlines = 1, int $level = Shell::NORMAL): int|null
Выводит одно или несколько сообщений в стандартный вывод. Если параметры не указаны, выводится только символ новой строки.
Уровни вывода
Существует 3 встроенных уровня вывода. Shell::QUIET, Shell::NORMAL, Shell::VERBOSE. Уровни вывода verbose и quiet соответствуют переключателям вывода verbose и quiet в большинстве оболочек. Использование Shell::QUIET для сообщения означает, что оно всегда будет отображаться. В то время как использование Shell::VERBOSE означает, что оно будет отображаться только при включенном режиме подробного вывода.
Параметры
-
string|string[]$message Строка или массив строк для вывода
-
int$newlines optional Количество символов новой строки для добавления
-
int$level optional Уровень вывода сообщения, см. выше.
Возвращает
int|nullСсылки
param() public
param(string $name): string|bool|null
Безопасно получить значения из $this->params.
Параметры
-
string$name Имя параметра для получения.
Возвращает
string|bool|nullparseDispatchArguments() public
parseDispatchArguments(array $args): array
Парсит аргументы для метода dispatchShell().
Параметры
-
array$args Аргументы, полученные из метода dispatchShell() с помощью func_get_args().
Возвращает
arrayquiet() public
quiet(string|string[] $message, int $newlines = 1): int|null
Вывод на всех уровнях.
Параметры
-
string|string[]$message Строка или массив строк для вывода
-
int$newlines optional Количество добавляемых символов новой строки
Возвращает
int|nullrunCommand() public
runCommand(array $argv, bool $autoMethod = false, array $extra = []): int|bool|null
Запускает оболочку с предоставленным argv.
Делегирует вызовы задачам и разрешает методы внутри класса. Команды ищутся в следующем порядке:
- Метод в оболочке.
- Соответствующее имя задачи.
-
main()метод.
Если оболочка реализует метод main(), все отсутствующие вызовы методов будут отправлены в main() с оригинальным именем метода в argv.
Для вызова задач они обязательно должны быть представлены как подкоманды. Если вы определяете подкоманды, вы должны определить все подкоманды, необходимые вашей оболочке, будь то методы этого класса или методы задач.
Параметры
-
array$argv Массив аргументов для запуска оболочки. В этом массиве должно отсутствовать имя оболочки.
-
bool$autoMethod optional Установите в значение true, чтобы разрешить вызов любого публичного метода, даже если он не был определен как подкоманда. Это используется ShellDispatcher для упрощения создания простых оболочек.
-
array$extra optional Дополнительные параметры, которые вы можете вручную передать в оболочку для обработки. Встроенный дополнительный параметр:
Возвращает
int|bool|nullСсылки
setIo() public
setIo(Cake\Console\ConsoleIo $io): void
Устанавливает объект io для этой оболочки.
Параметры
-
Cake\Console\ConsoleIo$io Объект ConsoleIo для использования.
Возвращает
voidsetModelType() public
setModelType(string $modelType): $this
Устанавливает тип модели, который будет использоваться этим классом.
Параметры
-
string$modelType Тип модели.
Возвращает
$thissetRootName() public
setRootName(string $name): $this
Устанавливает имя корневой команды для вывода справки.
Параметры
-
string$name Имя корневой команды.
Возвращает
$thissetTableLocator() public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Устанавливает локатор таблиц.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocator Экземпляр LocatorInterface.
Возвращает
$thisshortPath() public
shortPath(string $file): string
Делает абсолютный путь к файлу более удобочитаемым.
Параметры
-
string$file Абсолютный путь к файлу.
Возвращает
stringСсылки
startup() public
startup(): void
Запускает оболочку и отображает приветственное сообщение. Позволяет проверять и настраивать перед выполнением команды или основного выполнения.
Переопределите этот метод, если хотите убрать приветственную информацию или иным образом изменить поток до команды.
Возвращает
voidСсылки
success() public
success(string|string[] $message, int $newlines = 1, int $level = Shell::NORMAL): int|null
Удобный метод для out(), который оборачивает сообщение тегом .
Параметры
-
string|string[]$message Строка или массив строк для вывода
-
int$newlines optional Количество добавляемых символов новой строки
-
int$level optional Уровень вывода сообщения, см. выше.
Возвращает
int|nullСм. также
verbose() public
verbose(string|string[] $message, int $newlines = 1): int|null
Вывод на уровне verbose.
Параметры
-
string|string[]$message Строка или массив строк для вывода
-
int$newlines optional Количество добавляемых символов новой строки
Возвращает
int|nullwarn() public
warn(string|string[] $message, int $newlines = 1): int
Удобный метод для err(), который оборачивает сообщение тегом .
Параметры
-
string|string[]$message Строка или массив строк для вывода
-
int$newlines optional Количество добавляемых символов новой строки
Возвращает
intСм. также
wrapText() public
wrapText(string $text, int|array $options = []): string
Обернуть блок текста. Позволяет задать ширину и отступы блока текста.
Параметры
-
widthШирина обрезки. По умолчанию 72 -
wordWrapОбрезка только по разрывам слов (пробелам). По умолчанию true. -
indentОтступ текста с помощью указанной строки. По умолчанию null.
Параметры
-
string$text Текст для форматирования.
-
int|array$options optional Массив параметров или целое число для обрезки текста.
Возвращает
stringСм. также
Ссылки
Подробное описание свойств
$OptionParser public
Экземпляр ConsoleOptionParser, настроенный для этого класса.
Тип
Cake\Console\ConsoleOptionParser$Tasks public
Коллекция задач для команды, используемая для создания задач.
Тип
Cake\Console\TaskRegistry$_io protected
Экземпляр ConsoleIo.
Тип
Cake\Console\ConsoleIo$_modelFactories protected
Список переопределённых функций фабрики моделей.
Тип
(callableCake\Datasource\Locator\LocatorInterface)[]$_modelType protected
Тип используемой модели.
Тип
string$_tableLocator protected
Экземпляр локатора таблиц.
Тип
Cake\ORM\Locator\LocatorInterface|null$_taskMap protected
Нормализованная карта задач.
Тип
array$args public
Содержит аргументы, обработанные из командной строки.
Тип
array$command public
Команда (метод/задача), которая выполняется.
Тип
string|null$interactive public
Если true, скрипт запросит разрешение на выполнение действий.
Тип
bool$modelClass protected
Основное имя класса модели для этого объекта. Должно быть во множественном числе. CakePHP не будет склонять имя.
Пример: Для объекта под названием «Комментарии», modelClass будет «Комментарии». Классы плагинов должны использовать имена в формате Plugin.Comments для корректной загрузки моделей из соответствующего плагина.
Использование пустой строки для отключения автоматической загрузки для этого объекта. Null автоматически определяет на основе имени контроллера.
Тип
string|null$name public
Имя оболочки в camelized формате.
Тип
string$params public
Содержит переключатели команд, обработанные из командной строки.
Тип
array$plugin public
Имя плагина, к которому принадлежит оболочка. Автоматически устанавливается ShellDispatcher при создании оболочки.
Тип
string$rootName protected
Корневое имя команды, используемое при генерации вывода справки.
Тип
string$taskNames public
Содержит загруженные задачи
Тип
array$tasks public
Содержит задачи для загрузки и инициализации
Тип
array|bool
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.2/class-Cake.Console.Shell.html