Вы находитесь на странице: 1из 6

Diseño y desarrollo de páginas web

Ir a...

10 cosas que quizás no sabías de PHP en la shell


Inicio » 10 cosas que quizás no sabías de PHP en la shell

Todos sabemos lo fantástico que es PHP como lenguaje de programación de páginas web. Lo que no muchos saben es que es
igualmente fantástico como lenguaje para realizar programas multiplataforma para la shell. No todo es bash, Python, perl o Microsoft
Powershell. Vamos a ver algunas de las cosas que quizás no sabías que podemos hacer con PHP en la consola.

Nota: Toda esta información está disponible en el manual de documentación de PHP.

1. Ejecutar un script
Podemos crearnos nuestros propios programas simplemente creando un fichero .php y ejecutándolo con el binario CLI php. Por ejemplo:

<?php
echo "hola mundo!n";
?>

Y ahora para ejecutarlo sólo tendríamos que llamar al binario php (php.exe en Windows) seguido del nombre del script. Supongamos que
el ejemplo de arriba lo guardamos en un fichero que se llama test.php. Sería así:

$ php test.php

Y en sistemas Windows:

> php.exe test.php

De esta forma, los dos mostrarían en pantalla el texto “hola mundo!”. Fácil, verdad?

2. Hacer que el script se sea ejecutable


En Windows tendremos que asociar la extensión .php al binario php.exe. De esa forma, al hacer doble clic sobre un fichero, este se
ejecutará. Sin embargo, si quisiéramos que se pudiera ejecutar desde la consola, tendríamos que crear un fichero por lotes .bat que
realice la llamada.

@echo OFF
"C:phpphp.exe" test.php

En sistemas Unix es más sencillo. Tenemos que añadir en la primera línea la ruta al binario que ejecuta el script, y posteriormente
otorgamos permisos de ejecución al fichero. Y ya está, ya es ejecutable desde la consola y desde el entorno gráfico. El fichero quedaría
así:

#!/usr/bin/php
<?php
echo "hola mundo!n";
?>

Y después damos permisos de ejecución, y ya podremos ejecutarlo:

$ chmod +x test.php
$ ./test.php

3. Pasar parámetros al programa


Supongamos un comando cualquier de la consola, por ejemplo “ls”. Este comando acepta numerosos parámetros para controlar su
comportamiento. En PHP también podemos pasar parámetros. Sólo tenemos que tener en cuenta una cosa: Si el script no tiene permisos
de ejecución, hay que pasar los parámetros tras los caracteres “–”. Es así para prevenir que el binario php los considere parámetros suyos.
Veamos un ejemplo de cómo hacerlo:
$ php test.php — parametro1 parametro2
$ ./test.php parametro1 parametro2

En el primer ejemplo ejecutamos el binario php y le pasamos como parámetro el nombre del script, por lo que en este caso añadimos los
caracteres “–”. En cambio, en el segundo no es necesario, ya que el script tiene permisos de ejecución.

En sistemas Windows, como vimos arriba, habría que crear un fichero por lotes .bat, que para que pasara los parámetros a nuestro script
quedaría así:

@echo OFF
"C:phpphp.exe" test.php %*

Bien, ya sabemos cómo enviar parámetros al script. Sólo nos queda saber cómo manejarlos. Pues muy sencillo. Hay dos variables globales
para manejarlos:

1. $argc – Contiene el número de parámetros que recibe el script


2. $argv – Es un array con los parámetros en sí

4. Usar PHP en como consola interactiva


Al igual que ocurre con Python, PHP también puede ejecutarse en modo interactivo. Esto es, introducimos a mano los comandos en una
“consola PHP”, y ésta los ejecuta al vuelo. Sólo hay que poner el parámetro “- a”. Por ejemplo:

$ php -a
Interactive shell

php > echo 5+8;


13
php > function sumarDos($n)
php > {
php { return $n + 2;
php { }
php > var_dump(sumarDos(2));
int(4)
php >

Además, pulsando el botón tabulador, tendrás autocompletado de variables, funciones, clases, constantes, método estáticos y
constantes de clases.

5. Ejecutar una línea de código PHP al momento


Podemos ejecutar el código que queramos usando el modificador “- r”. Imaginemos que queremos aplicar un hash md5 a un fichero de
texto, y no tenemos en nuestro sistema el comando md5sum. Podríamos hacer lo siguiente:

php -r 'echo md5(file_get_contents("fichero.txt"));'

Lo que hacemos es ejecutar los comandos que hay entre las comillas simples:

1. Cargamos el contenido de ‘fichero.txt’.


2. Le aplicamos el hash md5.
3. Lo mostramos en pantalla.

¡Qué de cosas se pueden hacer con esto!

6. Pasar contenidos a PHP por tuberías


Muchas veces vemos comandos como:

echo "hola mundo" | wc -c

En este sencillo ejemplo lo que hemos hecho es en la salida estándar el texto “hola mundo”, que a su vez se envía a la entrada estándar
del comando “wc - c”, que se encarga de contar el número de caracteres. ¿Cómo hacemos esto en PHP? Consultando la entrada
estándar. En la versión CLI de PHP ponen a nuestra disposición 3 útiles constantes:

1. STDIN – Stream a la entrada estándar.


2. STDOUT – Stream a la salida estándar.
3. STDERR – Stream a la salida de errores.
Si quisiéramos contar el número de caracteres del texto recibido por la entrada estándar en PHP, podríamos hacer lo siguiente:

echo "hola mundo" | php -r 'echo strlen(fgets(STDIN));'

7. Mostrar un fichero PHP sin comentarios ni espacios


¿Nunca te has preguntado cuántos caracteres útiles tiene un gran proyecto? Con el modificador “- w” puedes verlo, pues eliminará todos
los caracteres en blanco innecesarios (incluidos tabulares, retornos de carro, cambios de línea, etc), y todos los comentarios. Además,
también podrás así minimizar el tamaño de los ficheros. Por ejemplo:

$ php -w fichero.php

8. Consultar documentación desde la consola


Supón que deseas conocer los parámetros de una función, o los métodos de una clase… Puedes consultarlo desde la consola, siempre y
cuando tu versión de PHP esté compilada con la extensión Reflection. Esta familia de modificadores nos da 4 opciones:

1. “–rf” – Muestra información de una función o de un método de una clase.


2. “–rc” – Muestra información de una clase (sus métodos, atributos, constantes…).
3. “–re” – Muestra información de una extensión (directivas .ini, funciones, constantes, clases, etc).
4. “–ri” – Muestra información sobre la configuración de una extensión. Esto es, lo mismo que devuelve phpinfo() para cada extensión.
Si queremos ver la información general, usaremos “main” como nombre de extensión.

Veamos un ejemplo en el que consultamos información de la función md5():

$ php --rf md5


Function [ <internal:standard> function md5 ] {
- Parameters [2] {
Parameter #0 [ <required> $str ]
Parameter #1 [ <optional> $raw_output ]
}
}

Una opción estupenda cuando no tenemos acceso a internet, ni nos hemos descargado la documentación de PHP a nuestro equipo.

9. Decorar la sintaxis de nuestro código


PHP nos ofrece una forma sencillísima de generar una versión HTML de nuestro código, coloreando y destacando cada parte. Sólo
tendremos que ejecutarlo con el modificador “- w”. Una vez hecho esto, podremos exportarla al formato que queramos (PDF, Word,
XHTML, etc). Muy útil cuando queremos imprimir un código fuente.

$ php -w fichero.php

Además, al estar disponible desde el propio binario de php, es muy fácil generar una versión HTML coloreada de cada fichero.

10. La joya de la corona: definir código inicial, final, y para cada


línea
Si no tenías suficiente con sed o awk, ahora con PHP vas a poder hacer maravillas. Tenemos estos cuatro modificadores:

1. “- B” – Código PHP a ejecutar antes que todo lo demás.


2. “- F” – Código PHP a ejecutar cuando finalice todo lo demás.
3. “- R” – Código PHP a ejecutar por cada línea. Tendremos $argn con la línea que se está procesando, y $argi con el número de línea.
4. “- F” – Fichero con el código PHP a ejecutar por cada línea.

Veamos un ejemplo muy didáctico y muy poco útil de la documentación de PHP. Supongamos que queremos contar el número de líneas
de un proyecto. Accedemos a su directorio y ejecutamos lo siguiente:

$ find . | php -B '$lineas=0;' -R '$lineas += count(@file($argn));' -E 'echo "Total de líneas: $lineasn";'

Veámoslo paso a paso:

1. En primer lugar ejecutamos el comando “find” de la consola de Linux. Nos mostrará (recursivamente) todos los ficheros del
directorio actual.
2. El resultado se lo pasamos por la entrada estándar al binario php, el cual realiza lo siguiente:
1. En el modificador “- B” especificamos el código inicial. Simplemente inicializamos la variable $lineas a cero.
2. En el modificador “- R” decimos lo que se hará por cada línea recibida por la entrada estándar. En este caso, cada línea se
corresponde con la ruta a un fichero:
1. Como vimos arriba, $argn contiene el texto que se está procesando. Contiene la ruta a un fichero
2. Pasamos esa ruta a la función file(), que genera un array donde cada índice contiene una fila del fichero leído.
3. Consultamos el tamaño del array, es decir, el número de líneas del fichero.
4. Incrementamos la variable $lineas con el valor obtenido en el paso anterior.
3. Finalmente, el modificador ‘- E’ se ejecuta al finalizar todo lo demás, y nos muestra como resultado el número total de líneas
de texto que hay en todos los ficheros de la carpeta actual.

Sencillísimo y muy potente. Lo que más complicado puede resultar es recordar los 3 modificadores (B,F,R) y las dos variables ($argn y
$argi).

Por Jesús | desarrollo, php | 5 c oment arios

Comparte e ste artículo, e scoge la plataforma!

Acerca del autor: Jesús

Artículos relacionados

5 comentarios
Daniel Carrero 25 sept iembre, 2010 en 1:46 - Reply

Excelente revision!!
Confieso que no sabia algunos y sin duda serán interesantes en la implementación!!
Saludos y gracias por compartir

chusete 25 sept iembre, 2010 en 17:52 - Reply

Hola Daniel
Me alegro de que te guste! La verdad, muchas de esas cosas yo tampoco las sabía hasta hace poco. Pero sin duda las daré uso de
ahora en adelante.
Un saludo

Daniel Carrero 27 sept iembre, 2010 en 19:52 - Reply

Hola de nuevo
Sí eso pasa mucho, pero hacer este review nos ayudará a aprender mas de php.
Saludos y gracias por tu comentario en mi blog.

oliver 11 enero, 2011 en 13:08 - Reply

gracias me ha servido de mucha ayuda, funciona mas rrapido que desde el navegador.

Escribir un comentario

Nombre (obligatorio)
Email (obligatorio)

Página web

Comentario...

COM ENTARIO DE ARTÍCULO

Re de s sociale s

Buscar algo e n Gnoma

Buscar ...

Popular Nue vos

Introducción a la programación en Facebook V


23 de sept iembre de 2011

Introducción a la programación en Facebook


13 de sept iembre de 2011

Introducción a Doctrine 2
19 de febrero de 2011

Últimos trabajos

ACERCA DE

Gnoma es una compañía especializada en desarrollos de soluciones web. Nos apasionan las nuevas tecnologías y enfrentarnos día a día a
nuevos retos.

Si tienes un proyecto en mente, cuenta con nosotros.


NUBE DE ETIQUETAS

acid ajax alexa API Graph autónomos coffeescript css css3 debug desarrollo desarrollo web diseño errores eventos facebook facebook API firefox
framework freelance google html html5 ie9 internet explorer javascript joomla jquery mac mamp mysql php plugin
programación rendimiento seo svg tutorial versionitis w3c web web workers windows Wordpress zend ámbito

ÚLTIM OS TWEETS

loading new tweets

INFORM ACIÓN DE CONTACTO

@gnomaweb

Email: hola@gnoma.es

Web: http://gnoma.es

Copyright 2012 Gnoma | Aviso legal

Вам также может понравиться