PHP-CLI es una biblioteca simple que ayuda a crear scripts de línea de comandos de buen aspecto.
Se encarga de
Es liviano y no tiene dependencias de terceros . Nota: Esto es solo para scripts no interactivos. No tiene línea de lectura o soporte similar.
Use compositor:
php composer.phar require splitbrain/php-cli
Ejemplo 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 ();
El uso básico es simple:
extend splitbrainphpcliCLIsetup($options) y registrar opciones, argumentos, comandos y establecer textos de ayuda$options->setHelp() agrega una descripción general$options->registerOption() agrega una opción$options->registerArgument() agrega un argumento$options->registerCommand() agrega un comando Submain($options) y haga su lógica comercial allí$options->getOpts le permite acceder a las opciones establecidas$options->getArgs() Devuelve los argumentos restantes después de eliminar las opciones$options->getCmd() Devuelve el comando subconsador que usó el usuariorun() en ellaSe pueden encontrar más ejemplos en el directorio de ejemplos. Consulte los documentos de API para obtener más información.
De manera predeterminada, la clase CLI registra un controlador de excepciones e imprimirá el mensaje de la excepción al usuario final y saldrá del programa con un código de salida distinto de cero. Puede deshabilitar este comportamiento y atrapar todas las excepciones al pasar falsas al constructor.
Puede usar la splitbrainphpcliException proporcionada para indicar cualquier problema dentro de su código principal usted mismo. El código de la excepción se utilizará como código de salida entonces.
Las pilas se imprimirán en debug del nivel de registro.
La salida de color se maneja a través de la clase Colors . Intenta detectar si hay un terminal de color disponible y solo entonces usa colores terminales. Siempre puede suprimir la salida de color pasando --no-colors a sus scripts. La discapacidad de los colores también deshabilitará los prefijos de emoticon.
Los mensajes de registro de color simple pueden ser imprimidos utilizando el success() (verde), info() (cian), error() (rojo) o fatal() (rojo). Este último también saldrá de la programación con un código de salida distinto de cero.
Para un color más complejo, puede acceder a la clase de color a través de $this->colors en su script. El método wrap() es probablemente lo que desea usar.
El formato de tabla permite colorear columnas completas. Para usar ese mecanismo, pase una matriz de colores como tercer parámetro a su método format() . Tenga en cuenta que no puede pasar textos coloreados en los segundos parámetros (el cálculo de la longitud del texto y el envoltorio fallarán, rompiendo sus textos).
La clase TableFormatter le permite alinear textos en varias columnas. Intenta descubrir el ancho terminal disponible por sí solo. Se puede sobrescribir estableciendo una variable de entorno COLUMNS .
El formateador se usa a través del método format() que espera al menos dos matrices: el primero define los anchos de la columna, el segundo contiene los textos para llenar las columnas. Entre cada columna se imprime un borde (un solo espacio por defecto).
Consulte el example/table.php para el uso de la muestra.
El ancho de las columnas se puede dar en tres formas:
15 )25% )* )Al mezclar anchos fijos y porcentuales, los porcentajes se refieren al espacio restante después de que se hayan asignado todas las columnas fijas.
El espacio para las bordes se calcula automáticamente. Se recomienda tener siempre algún relativo (porcentaje) o una columna de fluido para ajustar para diferentes anchos terminales.
El formateador de la tabla se usa para la pantalla de ayuda automática accesible cuando llame a su script con -h o --help .
La clase CLI es un registrador compatible totalmente PSR-3 (imprimir datos de registro coloreados en STDOUT y STDERR). Esto es útil cuando llama al código de backend de su CLI que espera que una instancia de registrador produzca cualquier salida de estado sensible mientras se ejecuta.
Si necesita aprobar una clase que implementa el PsrLogLoggerInterface puede hacerlo heredando de una de las dos clases proporcionadas que implementan esta interfaz en lugar de splitbrainphpcliCLI .
splitbrainphpcliPSR3CLI si está utilizando la versión 2 de PSR3 (PHP <8.0)splitbrainphpcliPSR3CLIv3 si está utilizando la versión 3 de PSR3 (PHP> = 8.0) El objeto resultante se puede pasar como la instancia del registrador. La diferencia entre las dos está en firmas de método ajustado (con un tipo apropiado con sugerencias) solamente. Asegúrese de tener el paquete sugerido de compositor psr/log instalado cuando use estas clases.
Nota: Si su código de backend requiere un Logger PSR-3, pero en realidad no escribe verificación de la interfaz (también conocido como solo Loggeraware), también puede pasar una instancia de splitbrainphpcliCLI .
Puede ajustar la verbosidad de su herramienta CLI utilizando el parámetro --loglevel . Los Logelvels compatibles son los PSR-3 Loglevels y nuestro propio nivel success :

Los métodos de conveniencia para todos los niveles de registro están disponibles. La interpolación del marcador de posición como se describe en PSR-3 también está disponible. Los mensajes desde el nivel warning se imprimen en STDERR todo a continuación se imprimen a STDOUT .
El nivel de registro predeterminado de su script se puede establecer sobrescribiendo el miembro $logdefault .
Ver example/logging.php para un ejemplo.