friendsofhyperf/closure-command

The closure command component for Hyperf.


README

Latest Stable Version Total Downloads License

The closure command component for Hyperf.

Installation

composer require friendsofhyperf/closure-command

Publish

php bin/hyperf.php vendor:publish friendsofhyperf/closure-command

Usage

  • Define ClosureCommand
// config/console.php

use FriendsOfHyperf\ClosureCommand\Console;
use FriendsOfHyperf\ClosureCommand\Inspiring;

Console::command('inspire', function () {
    $this->comment(Inspiring::quote());
})->describe('Display an inspiring quote');

Console::command('foo:bar', function() {
    $this->info('Command foo:bar executed.');
})->describe('Description of command foo::bar');
  • Define AnnotationCommand
<?php

namespace App\Service;

use FriendsOfHyperf\ClosureCommand\Annotation\Command;
use FriendsOfHyperf\ClosureCommand\Output;
use Hyperf\Di\Annotation\Inject;

#[Command(signature: 'foo:bar1', handle: 'bar1', description: 'The description of foo:bar1 command.')]
#[Command(signature: 'foo', description: 'The description of foo command.')]
class FooService
{
    #[Inject()]
    protected Output $output;

    #[Command(signature: 'foo:bar {--bar=1 : Bar Value}', description: 'The description of foo:bar command.')]
    public function bar($bar)
    {
        $this->output->info('Bar Value: ' . $bar);

        return $bar;
    }

    public function bar1()
    {
        $this->output->info(__METHOD__);
    }

    public function handle()
    {
        $this->output->info(__METHOD__);
    }
}

Run php bin/hyperf.php

foo
  foo:bar                   The description of foo:bar command.
  foo:bar1                  The description of foo:bar1 command.