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!




