minicli 소개: CLI 중심의 PHP 응용 프로그램에 사용되는 마이크로프레임워크
Minicli는 교육 실험으로서 창립된 것이고 경량급의 기초이다. 나는 나의 개인 프로젝트에서 중용할 수 있다.나는 그것을 내가 조립할 수 있는 가장 기본적인 단원으로 간주하고 그 위에서 나는 나의 장난감을 만들 수 있다.
나는 이미 몇 달 동안 이 시리즈에서 나의 최신 게시물을 공유하지 않았다. 나는 내가 줄곧 하고 있는 일을 공유하고 싶지 않다. 왜냐하면 그것은 항상 불완전한 작품처럼 느껴지기 때문이다.그러나 그것은 완전할 것인가 (또는 이렇게 느낄 것인가)이 가능하다, ~할 수 있다,...Minicli는 0일째부터 시작된 것이다. 비록 나는 그것을 주류 프로젝트로 바꾸려고 하지 않았지만, 명령줄에서 간단한 내용을 구축하는 것에 흥미를 가진 사람들을 도울 수 있을 뿐만 아니라, 수십 개의 외부 수요를 지나치게 만족시킬 필요가 없다고 생각한다.
따라서 CLI 중심의 PHP 응용 프로그램에 사용되는 고도의 실험적인 무의존 마이크로 프레임워크인 Minicli을 정식으로 소개하고 싶습니다.
비록 나는 응용 프로그램의 모든 바퀴를 재발명할 것을 주장하지는 않지만, 기본적인 명령 해석과 루트를 위해 10여 개의 다른 라이브러리가 필요하지 않다는 출발점이 있어야 한다고 생각한다.그곳에서 의존할 외부 라이브러리를 의식적으로 선택할 수 있어야 한다.Minicli는 내가 이런 상황을 해결하기 위해 제기한 것이다.
지금까지 Minicli로 무엇을 구축했습니다.
Dolphin, 명령줄에서 Digital Ocean 물방울을 관리하는 명령줄 도구입니다.
My website, 이것은 정적 내용 CMS입니다.나는 그것을 Librarian(WIP)이라는 단독 프로젝트로 개원했다.
이 문서에서는 PHP에서 Minicli를 사용하여 간단한 CLI 응용 프로그램을 만드는 방법을 학습합니다.
항목 만들기
시작하려면
php-cli
및 Composer이 필요합니다.다음 내용을 사용하여 새 항목을 만듭니다.
composer create-project --prefer-dist minicli/application myapp
설치가 완료되면 다음 도구를 사용하여 minicli
을 실행할 수 있습니다.cd myapp
./minicli
기본 응용 프로그램 서명을 표시합니다.help
에 정의된 minicli와 함께 제공된 app/Command/Help/DefaultController.php
명령은 자동으로 사용 가능한 명령 트리를 생성합니다../minicli help
Available Commands
help
└──test
help test
에 정의된 app/Command/Help/TestController.php
명령은 매개 변수의 메아리 테스트를 표시합니다../minicli help test user=erika name=value
Hello, erika!
Array
(
[user] => erika
[name] => value
)
첫 번째 명령 만들기
명령을 만드는 가장 간단한 방법은
minicli
스크립트를 편집하고 registerCommand
을 통해 새 명령을 응용 프로그램의 익명 함수로 정의하는 것입니다.#!/usr/bin/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 mycommand
명령 컨트롤러 사용
명령을 컨트롤러에 구성하려면 를 사용해야 합니다.
hello
이라는 명령을 만들고 싶다고 가정하십시오.우선 app/Commands
폴더 아래에 새 디렉터리를 만들어야 합니다.mkdir app/Commands/Hello
현재 Hello
은 명령 이름 공간입니다.이 디렉터리에서 명령 컨트롤러를 하나 이상 만들어야 합니다.DefaultController
부터 시작할 수 있습니다. 하위 명령이 제공되지 않을 때 기본적으로 호출됩니다.이것은
DefaultController
클래스의 외관입니다.<?php
namespace App\Command\Hello;
use Minicli\Command\CommandController;
class DefaultController extends CommandController
{
public function handle()
{
$this->getPrinter()->display("Hello World!");
}
}
이 명령은 다음과 같이 사용할 수 있습니다../minicli hello
하위 명령이 제공되지 않으므로 기본 명령을 실행할 것으로 추정됩니다.이 명령은 다음과 같이 호출할 수도 있습니다../minicli hello default
Hello
네임스페이스에 배치된 다른 명령 컨트롤러는 유사한 방식으로 사용할 수 있습니다.예를 들어 hello caps
과 같은 새로운 하위 명령을 만들고 싶다고 가정하십시오.그런 다음
CapsController
이라는 새 명령 컨트롤러를 만듭니다.<?php
namespace App\Command\Hello;
use Minicli\Command\CommandController;
class CapsController extends CommandController
{
public function handle()
{
$this->getPrinter()->display("HELLO WORLD!");
}
}
이 새 명령은 다음과 같습니다../minicli hello caps
매개변수 사용
Minicli는 명령 호출 매개변수에 대해 몇 가지 규칙을 사용합니다.
key=value
과 --flag
이 아닌 매개 변수입니다.user=erika
--
을 접두사로 하는 단일 매개 변수, 예를 들어 --update
CommandController
클래스는 명령을 사용하여 파라미터를 호출하는 간편한 방법을 공개했다.예를 들어 이전
hello
명령을 업데이트하여 인사할 사람의 이름을 선택할 수 있는 매개 변수로 알려주기를 원한다고 가정하십시오.<?php
namespace App\Command\Hello;
use Minicli\Command\CommandController;
use Minicli\Input;
class HelloController extends CommandController
{
public function handle()
{
$name = $this->hasParam('user') ? $this->getParam('user') : 'World';
$this->getPrinter()->display(sprintf("Hello, %s!", $name));
}
}
이제 명령의 사용자 정의 버전을 사용하려면 다음을 실행해야 합니다../minicli hello user=erika
출력:Hello, erika!
CommandCall 클래스 방법
hasParam(string $key) : bool
- 매개 변수가 존재하면true를 되돌려줍니다.getParam(string $key) : string
- 매개 변수를 되돌려줍니다. 존재하지 않으면null을 되돌려줍니다.hasFlag(string $key) : bool
- 명령 호출에서 로고를 전달했는지 되돌려줍니다.출력 인쇄
CliPrinter
클래스는 다양한 색상과 스타일로 메시지를 인쇄하는 빠른 방법을 가지고 있습니다.그것은 두 개의 묶음 주제가 있다.
regular
과 unicorn
이다.이것은 응용 프로그램 부트 구성 패턴에 설정된 것입니다. 기본적으로 regular
테마를 사용하도록 설정됩니다. public function handle()
{
$this->getPrinter()->info("Starting Minicli...");
if (!$this->hasParam('message')) {
$this->getPrinter()->error("Error: you must provide a message.");
exit;
}
$this->getPrinter()->success($this->getParam('message'));
}
CliPrinter 클래스 방법
display(string $message) : void
- 줄 바꿈 메시지를 표시합니다.error(string $message) : void
- 현재 테마 색을 사용하여 새 줄 포장에 오류 메시지를 표시합니다.success(string $message) : void
- 현재 테마 색을 사용하여 새 줄 포장으로 성공 메시지를 표시합니다.info(string $message) : void
- 현재 테마 색상을 사용하여 새 줄 패키지로 정보 메시지를 표시합니다.newline() : void
- 새 행을 인쇄합니다.format(string $message, string $style="default") : string
- 원하는 스타일의 서식 적용 문자열을 반환합니다.out(string $message) : void
- 메시지를 인쇄합니다.끝내다
Minicli는 현재 진행 중인 작업이지만 가장 간단한 기초로 사용할 수 있습니다. 이를 바탕으로 재미있는 장난감 프로젝트와/또는 유용한 명령행 도구를 구축할 수 있습니다. 예를 들어 Dolphin입니다.
다음은 Minicli로 구축하고 싶은 생각들입니다. 하지만 아직까지 시간이 없습니다.
Reference
이 문제에 관하여(minicli 소개: CLI 중심의 PHP 응용 프로그램에 사용되는 마이크로프레임워크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/erikaheidi/introducing-minicli-a-microframework-for-cli-centric-php-applications-44ik텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)