Clip – trabajando desde linea de comando con PHP

Fuente: Mostofreddy - Un blog sobre programacion web.
8 del 4 de 2011

Clip es un nuevo proyecto que estoy comenzando que facilita la creación de script PHP para correrlos desde la shell o línea de comando.

La funcionalidad que esta implementada hasta ahora es la siguiente:

- Recupera los parámetros de entrada del script.
- Identifica el SO que se utiliza y usa los comandos adecuados para cada SO.
- Funcionalidad para imprimir y recuperar datos desde la consola.
- Permite cambiar de color y fondo a los datos que se imprimen en la consola.
- Validación automatica de los parametros de entrada.
- Invocación al método help cuando se usa -h o —help como parámetro.
- Invocación al método version cuando se usa —version como parámetro.

Veamos unos ejemplos de su uso: (el ejemplo completo se puede ver en github)

1) Imprimir la típica ayuda de los scripts de shell cuando ponemos -h o –help

Para esto debemos crear una clase que extienda de Clip (sisi, usa namespaces de PHP 5.3+)

#!/usr/bin/php
<?php
class Test extends ClipClip
{
    protected $name = '';

    protected function help()
    {
        $this->writer()->write('Esta es la ayuda');
    }
}
$test = new Test();

Luego abrimos una consola y ponemos

> ./test.php -h
> Esta es la ayuda

2) Mostrar la versión de nuestro script

    protected function version()
    {
        $this->writer()->write('Esta es la version');
    }
> ./test.php -version
> Esta es la version

3) Perdir datos al usuario

    public function getName()
    {
        $this->name = $this->writer()->prompt('Escribi tu nombre por favor', null, null, true);
        $this->writer()->newLine();
    }

4) Validar los datos de entrada

Para validar los datos de entrada hay que crear un método que se llame validate que recibe como parametro un objeto del tipo ClipClipOpts. Este objeto tiene 3 atributos:

- short: son las opciones que constan de una sola letra.
- long: son los parámetros del tipo –key o –key=valor.
- input: son los demás parámetros.

Por ejemplo:

    protected function validate(ClipClipOpts $opts)
    {
        if (!in_array('v', $opts->short)) {
            return "Error: Debe agregar la opcion 'v'";
        }
        return true;
    }

Para ver el mensaje de error, usamos el script así

./test.php -t --clave=valor /home/Bart
> Error: Debe agregar la opcion 'v'

En cambio si se invoca de alguna de las siguientes nameras no mostrará el error

./test.php -v --clave=valor /home/Bart
./test.php -vt --clave=valor /home/Bart

Espero que les sea de utilidad!


Recomendar a un amigo