2008-12-13

5 cosas que no sabías hacer con PHP

A menudo cuando un desarrollador comienza a programar en Php, se siente que ha encontrado la herramienta perfecta para el rápido desarrollo de sitios webs dinámicos, incluso tiempo atras en el que que las características del lenguaje y la cantidad de funciones eran más escasas. De un tiempo a esta parte el lenguaje a añadido extensiones y una gran popularidad. Desafortunadamente esto hace que para nuevos programadores sea mas dificil comprender algunos conceptos de este lenguaje.
Te recomiendo que si tu has estado buscando alguna funcion o funcionalidad y no lo has encontrado eches un vistazo a esta lista de 5 cosas que no puedes hacer con PHP.

1. Probar un rango de valores usando Switch

La condición switch es realmente útil, pero hay situaciones en las que este tipo de situaciones estan limitadas. El switch es usado para probar si una variable es equiparable a un determinado valor, algo como esto:

switch ($grado) {
case 'A':
echo 'Excelente!';
break;
case 'B':
echo 'Buen trabajo.';
break;
case 'C':
echo 'Estudia más.';
break;
}

¿Pero puedes hacer que switch compare rangos de valores?
El truco es usar switch no para comparar una variable contra un valor, sino una variable contra un valor booleano TRUE o FALSE:

switch (TRUE) {
case ($edad < 16):
echo 'No puedes conducir.';
break;
case ($edad < 18):
echo 'No puede votar.';
break;
case ($edad < 21):
echo 'Estudias y no tienes casa.';
break;
case ($edad > 65):
echo 'Debes jubilarte del trabajo.';
break;
default:
echo 'Trabaja,trabaja,trabaja...';
break;
}

Mientras intentas entender como funciona, puedes usar este ejemplo y aplicarlo a otras situaciones, a partir de ahora debes pensar como utilizar la condicion switch observándola desde esta perspectiva.

2. Hacer que print_r() devuelva los resultados en lugar de imprimirlos

Espero que estes familiarizado con el uso de print_r(): esta funcion imprime variables tanto el tipo como el valor. No parece gran cosa pero es una potente herramienta de depuración de errores. Un simple ejemplo:

$albums = array ('Amaral', 'Estopa', 'Greenday');
print_r ($albums);

...como resultado

Array ( [0] => Amaral [1] => Estopa [2] => Greenday )

En la version 4.3 de PHP - La mayor actualización del lenguaje - tambien tienes la opción de capturar la salida de print_r(). La funcion toma un segundo parametro para este propósito. Usando el array definido anteriormete, se haría así:

$capture = print_r ($albums, 1);

3. Manejar tus errores

El resumen de errores programado por PHP ciertament no es de lo mejor. EL famoso "headers already sent" o "call to undefined function" que te aparece en negrita y con un número de línea que puede o no puede ser correctos.

Pero puedes programar tu propio manejador de errores.s:

function mis_errores ($numero, $mensaje, $archivo, $linea) {
// Añade el CSS para tu codigo
echo '

El siguiente error ocurrio en linea ' . $linea . ' del archivo ' . $archivo . ': ' . $mensaje . '
';
echo '

Las actuales variables son:

' . print_r($GLOBALS, 1) . '

';
}

Entonces usarás tu propio manejador por defecto y no el de PHP diciendoselo a PHP en la funcion set_error_handler().

set_error_handler('mis_errores');

Entonces ya la mayoría de los errores seran manejados por tu función (pero hay algunas excepciones). Con el anterior ejemplo los errores son imprimidos con formato html.

Deberia incluso plantearte la posibilidad de enviar estos errores via mail con la funcion mailto y de esta manera tendras un control en tiempo real de tu sitio, o incluso manejar errores en la conexión a una base de datos.

try {
if (!@mysql_connect('localhost', 'username', 'password'))
throw new Exception (mysql_error());
} catch (Exception $e) {
echo 'Imposible conectar a la base de datos: ' . $e->getMessage();
}

Por supuesto estos son ejemplos muy básicos; hay muchas más funcionalidades que le puedes añadir.

4. Búsqueda rápida de un directorio

Si eres un veterano desarrollador de PHP alguna vez habrás programado un album de fotos y habrás necesitado localizar todas las imágenes disponibles de un directorio por ejemplo o quizas los archivos txt porque ellos almacenan datos relecantes para tu aplicación.

Cualquiera de los casos requiere el uso de la función opendir(), habrás utilizado readir() en un bucle, y finalmente closedir(). En el interior del bucle debes utilizar un expresión regular para asegurarte de que cada archivo sea el correcto. Pues hay una manera aún más sencilla...

Esta función encuentra archivos que se rigen por un mismo patrón, si por ejemplo quisieras buscar imágenes:

$dir = './imagenes/personales/directorio';

// Imagenes a buscar.
$files = glob ("$dir/{*.jpg,*.jpeg,*.gif}", GLOB_BRACE);

// Confirmar que ha sido incluido el patron.
if (is_array($files)) {

// Bucle.
foreach ($files as $image) {
echo "$image
\n";
}

} else {
echo 'No han sido encontradas imagenes';
}

Hay muchas otras constantes aprate de GLOB_BRACE que puedes usar para devolver archivos pero devilverian resultados desordenados o solo el nombre del directorio.

5. Limpiando tu HTML

HTML Tidy es un pequela utilidad para desarrolladores web. Esta utilidad analiza las páginas HTML y te ayuda a:

* Encontrar errores HTML
* Limpia el desorden creado por el IDE
* Mejora la accesibilidad de tus paginas
* Comprime el codigo y mejora el tiempo de descarga
* Etc...

No hay comentarios: