minicli 소개: CLI 중심의 PHP 응용 프로그램에 사용되는 마이크로프레임워크

13577 단어 showdevphpcli
본 시리즈의 이전 글에서는 PHP에서 CLI만 가능한 응용 프로그램에 대한 의존성 없는 마이크로프레임워크를 유도하는 절차를 보여 줍니다.
Minicli는 교육 실험으로서 창립된 것이고 경량급의 기초이다. 나는 나의 개인 프로젝트에서 중용할 수 있다.나는 그것을 내가 조립할 수 있는 가장 기본적인 단원으로 간주하고 그 위에서 나는 나의 장난감을 만들 수 있다.
나는 이미 몇 달 동안 이 시리즈에서 나의 최신 게시물을 공유하지 않았다. 나는 내가 줄곧 하고 있는 일을 공유하고 싶지 않다. 왜냐하면 그것은 항상 불완전한 작품처럼 느껴지기 때문이다.그러나 그것은 완전할 것인가 (또는 이렇게 느낄 것인가)이 가능하다, ~할 수 있다,...Minicli는 0일째부터 시작된 것이다. 비록 나는 그것을 주류 프로젝트로 바꾸려고 하지 않았지만, 명령줄에서 간단한 내용을 구축하는 것에 흥미를 가진 사람들을 도울 수 있을 뿐만 아니라, 수십 개의 외부 수요를 지나치게 만족시킬 필요가 없다고 생각한다.
따라서 CLI 중심의 PHP 응용 프로그램에 사용되는 고도의 실험적인 무의존 마이크로 프레임워크인 Minicli을 정식으로 소개하고 싶습니다.
비록 나는 응용 프로그램의 모든 바퀴를 재발명할 것을 주장하지는 않지만, 기본적인 명령 해석과 루트를 위해 10여 개의 다른 라이브러리가 필요하지 않다는 출발점이 있어야 한다고 생각한다.그곳에서 의존할 외부 라이브러리를 의식적으로 선택할 수 있어야 한다.Minicli는 내가 이런 상황을 해결하기 위해 제기한 것이다.

지금까지 Minicli로 무엇을 구축했습니다.


Dolphin, 명령줄에서 Digital Ocean 물방울을 관리하는 명령줄 도구입니다.

My website, 이것은 정적 내용 CMS입니다.나는 그것을 Librarian(WIP)이라는 단독 프로젝트로 개원했다.

이 문서에서는 PHP에서 Minicli를 사용하여 간단한 CLI 응용 프로그램을 만드는 방법을 학습합니다.

항목 만들기


시작하려면 php-cliComposer이 필요합니다.
다음 내용을 사용하여 새 항목을 만듭니다.
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는 명령 호출 매개변수에 대해 몇 가지 규칙을 사용합니다.
  • 매개 변수: 해석된 매개 변수 - $argv에서 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 클래스는 다양한 색상과 스타일로 메시지를 인쇄하는 빠른 방법을 가지고 있습니다.
    그것은 두 개의 묶음 주제가 있다. regularunicorn이다.이것은 응용 프로그램 부트 구성 패턴에 설정된 것입니다. 기본적으로 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로 구축하고 싶은 생각들입니다. 하지만 아직까지 시간이 없습니다.
  • 텍스트 기반 rpg 게임
  • 트위터 로봇
  • 트위터 사용자 찾기 도구
  • cli 기반 퀴즈 게임
  • Minicli를 사용해 보려면 documentation을 참조하여 자세한 내용을 확인하십시오. 질문이 있으면 언제든지 의견을 보내주십시오.)

    좋은 웹페이지 즐겨찾기