Criando Comandos
Exemplo 1 — Comando simples (sem categoria, sem parâmetro)
Crie o arquivo src/Commands/Hello.php:
<?php
namespace App\Commands;
use Bypc\Commander;
use Bypc\Core;
class Hello extends Commander {
protected string $name = 'hello';
protected string $description = 'Exibe uma saudação.';
protected bool $paramRequired = false;
protected bool $categoryRequired = false;
protected array $categoriesTrusted = [];
public function handler(Core $tool, string|null $param, string|null $category) {
$this->checkRulers($param, $category);
echo "Olá, mundo!\n";
}
}
Registe no seu bypc.php:
use App\Commands\Hello;
$tool->setCommand(new Hello());
Uso:
php bypc.php hello
# Olá, mundo!
Exemplo 2 — Comando com parâmetro
<?php
namespace App\Commands;
use Bypc\Commander;
use Bypc\Core;
class Greet extends Commander {
protected string $name = 'greet';
protected string $description = 'Saúda uma pessoa pelo nome.';
protected bool $paramRequired = true;
protected bool $categoryRequired = false;
protected array $categoriesTrusted = [];
public function handler(Core $tool, string|null $param, string|null $category) {
$this->checkRulers($param, $category);
echo "Olá, {$param}!\n";
}
}
Uso:
php bypc.php greet Lucas
# Olá, Lucas!
Se o usuário omitir o parâmetro,
checkRulers()lançaráException("Param is required.").
Exemplo 3 — Comando com categoria
O padrão comando:categoria permite "variantes" de um mesmo comando — útil para geradores (make:controller, make:seed, etc.).
<?php
namespace App\Commands;
use Bypc\Commander;
use Bypc\Core;
class Make extends Commander {
protected string $name = 'make';
protected string $description = 'Gera arquivos do projeto.';
protected bool $paramRequired = true;
protected bool $categoryRequired = true;
protected array $categoriesTrusted = ['controller', 'model', 'seed'];
public function handler(Core $tool, string|null $param, string|null $category) {
$this->checkRulers($param, $category);
switch ($category) {
case 'controller':
$this->makeController($param);
break;
case 'model':
$this->makeModel($param);
break;
case 'seed':
$this->makeSeed($param);
break;
}
}
private function makeController(string $name): void {
$stub = "<?php\n\nclass {$name} {\n // ...\n}\n";
file_put_contents(__DIR__ . "/../app/Controllers/{$name}.php", $stub);
echo "Controller {$name} criado com sucesso.\n";
}
private function makeModel(string $name): void { /* ... */ }
private function makeSeed(string $name): void { /* ... */ }
}
Uso:
php bypc.php make:controller User
# Controller User criado com sucesso.
php bypc.php make:model User
# Model User criado com sucesso.
Categorias fora de
categoriesTrustedlançamException("Invalid category.").
Próximos passos
- Consulte a Referência de Comandos para uma descrição técnica mais profunda.
- Volte para a Instalação caso ainda não tenha configurado o projeto.