Minicli는 CLI 중심 PHP 애플리케이션을 구축하기 위한 종속성이 없는 미니멀한 프레임워크입니다. 이는 명령을 구성하는 구조화된 방법뿐만 아니라 명령 인수 작업, 사용자로부터 입력 얻기 및 컬러 출력 인쇄를 용이하게 하는 다양한 도우미를 제공합니다.
빠른 링크:
종속성이 없다는 것은 무엇을 의미합니까? 이는 수십 개의 중첩된 사용자 영역 종속성 없이 작동하는 CLI PHP 애플리케이션을 구축할 수 있음을 의미합니다. 기본 minicli/minicli
패키지에는 테스트 종속성과 단일 시스템 요구 사항만 있습니다.
참고: 사용자 입력을 얻으려면
readline
PHP 확장도 필요합니다.
이는 자신만의 종속성을 선택할 수 있는 많은 공간을 제공합니다.
시작하는 방법에는 두 가지가 있습니다. 우리가 "미니멀리스트 앱"이라고 부르는 최소한의 기능을 원한다면 전체 애플리케이션을 포함하는 단일 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
생성하는 "Building Minicli"라는 시리즈를 구성합니다.
참고: Minicli는 해당 시리즈가 처음 작성된 이후 많이 발전했지만 이것이 오늘날 Minicli의 기반이 되었습니다.