O PHP-CLI é uma biblioteca simples que ajuda a criar scripts de linha de comando de aparência agradável.
Ele cuida de
É leve e não possui dependências de terceiros . Nota: Isso é apenas para scripts não interativos. Não possui linear ou suporte semelhante.
Use compositor:
php composer.phar require splitbrain/php-cli
Exemplo mínimo:
#!/usr/bin/php
<?php
require __DIR__ . ' /../vendor/autoload.php ' ;
use splitbrain phpcli CLI ;
use splitbrain phpcli Options ;
class Minimal extends CLI
{
// register options and arguments
protected function setup ( Options $ options )
{
$ options -> setHelp ( ' A very minimal example that does nothing but print a version ' );
$ options -> registerOption ( ' version ' , ' print version ' , ' v ' );
}
// implement your code
protected function main ( Options $ options )
{
if ( $ options -> getOpt ( ' version ' )) {
$ this -> info ( ' 1.0.0 ' );
} else {
echo $ options -> help ();
}
}
}
// execute it
$ cli = new Minimal ();
$ cli -> run ();
O uso básico é simples:
extend splitbrainphpcliCLIsetup($options) e registrar opções, argumentos, comandos e definir textos de ajuda$options->setHelp() adiciona uma descrição geral$options->registerOption() adiciona uma opção$options->registerArgument() adiciona um argumento$options->registerCommand() Adiciona um sub comandomain($options) e faça sua lógica de negócios lá$options->getOpts permite que você acesse opções de conjunto$options->getArgs() retorna os argumentos restantes após remover as opções$options->getCmd() retorna o sub comando que o usuário usourun() nelaMais exemplos podem ser encontrados no diretório de exemplos. Consulte os documentos da API para obter mais informações.
Por padrão, a classe CLI registra um manipulador de exceção e imprimirá a mensagem da exceção ao usuário final e sairá da programação com um código de saída diferente de zero. Você pode desativar esse comportamento e capturar todas as exceções, passando falsas para o construtor.
Você pode usar a splitbrainphpcliException fornecido para sinalizar quaisquer problemas dentro do seu código principal. O código da exceção será usado como código de saída então.
O Stacktraces será impresso na debug do nível de log.
A saída colorida é tratada através da classe Colors . Ele tenta detectar se um terminal de cores está disponível e só então usa as cores do terminal. Você sempre pode suprimir a saída colorida passando --no-colors para seus scripts. As cores incapacitantes também desativarão os prefixos de emoticon.
As mensagens simples de log coloridas podem ser impressas por você usando os métodos de convocação success() (verde), info() (ciano), error() (vermelho) ou fatal() (vermelho). Este último também sairá da programação com um código de saída diferente de zero.
Para uma coloração mais complexa, você pode acessar a classe de cores através de $this->colors em seu script. O método wrap() é provavelmente o que você deseja usar.
O formatador da tabela permite colorir colunas completas. Para usar esse mecanismo, passe uma matriz de cores como terceiro parâmetro para o método format() . Observe que você não pode passar textos coloridos nos segundos parâmetros (o cálculo do comprimento do texto e o embrulho falhará, quebrando seus textos).
A classe TableFormatter permite alinhar textos em várias colunas. Ele tenta descobrir a largura do terminal disponível por conta própria. Pode ser substituído definindo uma variável de ambiente COLUMNS .
O formatador é usado através do método format() que espera pelo menos duas matrizes: o primeiro define as larguras da coluna, o segundo contém os textos a serem preenchidos nas colunas. Entre cada coluna, uma borda é impressa (um único espaço por padrão).
Consulte o example/table.php para uso da amostra.
A largura das colunas pode ser dada em três formas:
15 )25% )* )Ao misturar larguras fixas e percentuais, as porcentagens se referem ao espaço restante após a atribuição de todas as colunas fixas.
O espaço para bordas é calculado automaticamente. Recomenda -se sempre ter alguma relativa (porcentagem) ou uma coluna de fluido para ajustar para diferentes larguras terminais.
O formatador da tabela é usado para a tela de ajuda automática acessível ao ligar para o script com -h ou --help .
A classe CLI é um logger compatível com PSR-3 (impressão de dados de log colorido para stdout e stderr). Isso é útil quando você chama o código de back -end da sua CLI, que espera que uma instância de logger produza qualquer saída de status sensata durante a execução.
Se você precisar passar por uma classe implementando o PsrLogLoggerInterface poderá fazê -lo herdando de uma das duas classes que implementam essa interface em vez de splitbrainphpcliCLI .
splitbrainphpcliPSR3CLI se você estiver usando a versão 2 do PSR3 (php <8.0)splitbrainphpcliPSR3CLIv3 Se você estiver usando a versão 3 do PSR3 (php> = 8.0) O objeto resultante pode ser passado como a instância do logger. A diferença entre os dois está nas assinaturas de método ajustadas (apenas com o tipo apropriado de sugestão). Certifique -se de ter o pacote compositor psr/log sugerido instalado ao usar essas classes.
NOTA: Se o código do seu back-end exigir um logger do PSR-3, mas na verdade não digitar a verificação da interface (também é que apenas o LoggerAware), você também pode simplesmente passar em uma instância de splitbrainphpcliCLI .
Você pode ajustar a verbosidade da sua ferramenta CLI usando o parâmetro --loglevel . Os níveis de logLeres suportados são os níveis de logles do PSR-3 e nosso próprio nível success :

Métodos de conveniência para todos os níveis de log estão disponíveis. A interpolação de espaço reservado, conforme descrito no PSR-3, também está disponível. As mensagens do nível de warning em diante são impressas para STDERR todas abaixo são impressas para STDOUT .
O nível de log padrão do seu script pode ser definido substituindo o membro $logdefault .
Consulte example/logging.php para um exemplo.