Minicli — это минималистичная, независимая среда для создания PHP-приложений, ориентированных на CLI. Он обеспечивает структурированный способ организации ваших команд, а также различные помощники для облегчения работы с аргументами команд, получения входных данных от пользователей и печати цветных выходных данных.
Быстрые ссылки:
Что значит быть свободным от зависимости? Это означает, что вы можете создать работающее PHP-приложение CLI без десятков вложенных пользовательских зависимостей. Базовый пакет minicli/minicli
содержит только тестовые зависимости и одно системное требование:
Примечание. Если вы хотите получать данные пользователя, вам также потребуется PHP-расширение
readline
.
Это дает вам много возможностей для выбора собственных зависимостей.
Есть два способа начать. Если вам нужен минимум, который мы назовем «Минималистским приложением», вы можете создать один PHP-скрипт для всего вашего приложения. Если вам нужно более структурированное приложение с командами и подкомандами, вам следует использовать пространства имен команд для организации ваших команд в контроллерах.
Если вы просто хотите настроить несколько простых команд для запуска через minicli
, все, что вам нужно сделать, это создать App
и зарегистрировать ваши команды как анонимные функции.
composer require minicli/minicli
— это создаст новый файл composer.json
.minicli
со следующим содержимым: #!/usr/bin/env php
<?php
if ( php_sapi_name () !== ' cli ' ) {
exit ;
}
require __DIR__ . ' /vendor/autoload.php ' ;
use Minicli App ;
use Minicli Command CommandCall ;
$ app = new App ();
$ app -> setSignature ( ' ./minicli mycommand ' );
$ app -> registerCommand ( ' mycommand ' , function ( CommandCall $ input ) {
echo " My Command! " ;
var_dump ( $ input );
});
$ app -> runCommand ( $ argv );
Затем сделайте его исполняемым и запустите minicli
с помощью команды:
chmod +x minicli
./minicli mycommand
Для более структурированного приложения, использующего контроллеры и службы, лучше всего использовать пространства имен команд. Наш репозиторий шаблонов приложений — отличная отправная точка/шаблон для такой настройки Minicli.
Чтобы создать новый проект с использованием шаблона minicli/application
, запустите:
composer create-project --prefer-dist minicli/application myapp
Это создаст структуру каталогов, подобную следующей:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
Каждый каталог внутри app/Command
представляет пространство имен команд. Классы внутри app/Command/Help
представляют подкоманды, к которым вы можете получить доступ через основную команду help
.
Теперь вы можете запустить загрузочное приложение с помощью:
./minicli help
В документации содержится более подробная информация о создании команд и работе с выводом.
Minicli поддерживает использование цветовых тем для изменения стиля вывода командной строки. В настоящее время существует 3 встроенные темы, кроме темы по умолчанию:
Чтобы установить тему, передайте массив конфигурации со значением theme
при инициализации приложения в скрипте. Во встроенных темах требуется ведущий символ :
$ app = new App ([
' theme ' => ' Unicorn '
]);
Чтобы использовать встроенную тему по умолчанию, не включайте параметр конфигурации темы или задайте для него пустую строку.
Пользовательские темы также могут быть созданы и определены в вашем проекте. В этом случае задайте имя темы, включая ее пространство имен, без начального :
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
В приведенной выше настройке будет использоваться следующий пример темы:
<?php
// File : app / Theme / BlueTheme . php
namespace App Theme ;
use Minicli Output Theme DefaultTheme ;
use Minicli Output CLIColors ;
class BlueTheme extends DefaultTheme
{
public function getThemeColors (): array
{
return [
' default ' => [ CLIColors:: $ FG_BLUE ],
' alt ' => [ CLIColors:: $ FG_BLACK , CLIColors:: $ BG_BLUE ],
' info ' => [ CLIColors:: $ FG_WHITE ],
' info_alt ' => [ CLIColors:: $ FG_WHITE , CLIColors:: $ BG_BLUE ]
];
}
}
Пользовательские темы должны определять только стили, которые будут переопределять стили темы по умолчанию.
Взносы очень приветствуются! Вы можете внести свой вклад, предложив код, документацию, вопросы регистрации... Пожалуйста, обратитесь к нашей документации по вкладу для получения дополнительной информации о процессе внесения вклада и о том, что мы ожидаем от вас.
Minicli использует Pest PHP в качестве среды тестирования. После установки всех зависимостей с помощью composer install
вы можете запустить набор тестов с помощью:
./vendor/bin/pest
Чтобы получить отчет о покрытии кода, вам потребуется установить xdebug
. Затем вы можете запустить:
./vendor/bin/pest --coverage
И это даст вам подробную информацию о покрытии кода.
Следующие руководства на dev.to составляют серию под названием «Создание миникли», в которой мы создаем minicli
с нуля:
Примечание. Миникли сильно изменился с момента написания этой серии, но это стало основой того, чем Миникли является сегодня.