Webgrind: frontend para Xdebug

Webgrind es una aplicación web que nos permite visualizar los datos que nos ofrece Xdebug.
webgrind.png
Es de fácil instalación, compatible con todas las plataformas y permite comprobar el tiempo gastado en las funciones según su coste. Además podemos conocer dónde es llamada cada función y qué función la llama.
Webgrind
Vía / PHPDeveloper.org

5 funcionalidades de PHP que no se puede ignorar

Yo más diría que se deben conocer, porque algunas suelen ser algo desconocidas.

  • SimpleXML: parser de XML muy sencillo y potente, ya he hablado de esta librería y la diferencia con el método anterior de parsing de los xml es abismal.
  • JSON y SOAP: para la comunicación entre aplicaciones, a mí personalmente JSON me encanta y su uso es simple, muy simple.
  • PDO: capa de abstracción para acceso de la BD que nos permite acceder a MS SQL Server, Sybase, Firebird/Interbase, IBM, Informix, MySQL, Oracle, ODBC y DB2, PostgreSQL, SQLite de forma transparente.
  • SPL: o Standard PHP Library, permite convertir elementos en arrays y tratarlos con iteradores.
  • SQLite: librería para poder trabajar con esta base de datos (SQLite).

5 PHP 5 features you can’t afford to ignore

Vía / PHPDeveloper.org

Transformar los errores en excepciones en PHP

Lo que más me gusta en Java es el tratamiento de los errores mediante excepciones, en PHP no está tan logrado, pero se puede apañar para que tenga un funcionamiento parecido:

set_error_handler('error_handler');
function error_handler($errno, $errstr, $errfile, $errline) {
if (4096 == $errno) throw new Exception($errstr);
return false;
}

El código 4096 indica que el error es capturable, se produce un error pero no produce un situación inestable.

Después podremos capturar los errores de la siguiente manera:

try {
// Operación que produce error
} catch (ErrorException $e) {
// Tratar el error
}

Turning errors into exceptions

Nueva versión de TCPDF, clase PHP para crear PDFs

TCPDF es una librería PHP que permite generar PDFs, la cual usé para crear Post2PDF (plugin para WP que exporta a PDF las librerías).

Entre las novedades que nos ofrece la versión 3 nos encontramos con:

  • Mejoras en el tratamiento de imágenes, como por ejemplo el resize para optimizar el tamaño del PDF o inclusión de todos los tipos de archivos admitidos por GD.
  • Posibilidad de añadir transparencia a los elementos
  • Mejoras para el tratamiento de los colores: CMYK o colores HTML
  • Mejoras en el core y en las clases: propiedades privadas…
  • Ejemplos actualizados
  • Cambio de licencia a LGPL 2.1
  • Solución de errores

TCPDF

BytesFall: explorador de archivos mediante PHP

BytesFall Explorer es un administrador de archivos vía web realizado en PHP y Javascript, que nos permite subir archivos, descargarlos, verlos, editarlos, copiarlos, mover o renombrarlos, comprimirlos y cambiar los permisos de un fichero, directorio o un grupo de ficheros y directorios.
bytesfall.png
Además es posible crear ficheros y directorios, y ejecutar comandos shell, todo ello basado en una interfaz parecida a la del explorador de Windows. Los usuarios son guardados en una BD (MySQL o PostgreSQL) para realizar la autenticación.
BytesFall Explorer

Mejoras de rendimiento en PHP 5.3

Parece que la nueva versión de PHP (5.3) va a mejorar el rendimiento considerablemente en muchas de nuestras aplicaciones. En algunos casos hasta en un 30%:

  • Drupal un 20% más rápido
  • Qdig un 2% más rápido
  • typo3 un 30% más rápido
  • wordpress un 15% más rápido
  • xoops un 10% más rápido

PHP 5.3: Up to 30% performance win

Crear pestañas desde PHP

Uno de los aspectos más complicados para aquellos que empiezan dentro del diseño web es la realización de pestañas (tabs). Si necesitas una ayuda para generarlos, puede venirte bien esta clase PHP que con unas simples líneas de código podrás obtener unas pestañas con un resultado más que decente.

Tan solo habrá que ejecutar el siguiente código y se incluirán en tu HTML las etiquetas necesarias para mostrar los tabs, los cuales pueden ser activos, seleccionados y desactivados.

<

require_once('Static_Tabstrip.php');
$tabs = array(
array('id' => 'tab_1', 'name' => 'First tab', 'active' => empty($_GET['tab']), 'link' => 'example.php', 'mouseover' => 'Visit Google!'),
array('id' => 'tab_2', 'name' => 'Second', 'active' => !empty($_GET['tab']) && $_GET['tab'] === '2', 'link' => 'example.php?tab=2', 'mouseover' => 'Or not...'),
array('id' => 'tab_3', 'name' => 'Third (disabled)', 'active' => false)
);
PrintTabStrip($tabs);

Static Tabstrip

Clase para generar claves en PHP

Generar claves aleatoriamente puede ser necesario cuando en nuestra aplicación web tengamos que dar claves a los nuevos usuarios (por ejemplo como hace WordPress cuando instalamos).

Por ello esta clase nos puede venir muy bien, ya que de forma sencilla podemos crear claves de una longitud dada y pudiendo indicar si es en mayúsculas, minúsculas o mezcladas.

CreatePwd

URL routing con PHP

Un excelente tutorial que nos enseña como crear URL amigables y tratarlas para crear nuestras aplicaciones. Son URLs del tipo http://servidor/funcion/param1/param2, y gracias a ellas podemos hacer URLs más entendibles de forma sencilla. CodeIgniter las trata de la misma manera salvo que en vez de /funcion se trata de /clase/metodo, pero al final el tratamiento depende del que nosotros queramos darle.

Resumiendo un poco su funcionamiento, todas las llamadas deben pasar por un mismo script (normalmente index.php), mediante el .htaccess se redirecciona todo lo que llega al servidor al archivo index:

Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
#  Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Una vez todas las llamadas nos llegan al mismo script debemos obtener la función y los parámetro:

$requestURI = explode('/', $_SERVER['REQUEST_URI']);

El resto es sencillo y nos ofrece muchas posibilidades.

Url Routing with PHP, 2

Método sencillo para leer feeds mediante PHP

Leer feeds no es algo que se deba limitar a aplicaciones lectoras de feeds, ya que actualmente muchas webs ofrecen sus datos mediante este formato. Hacer un lector de feeds puede ser algo complicado, o más bien laborioso, ya que hay varios formatos y versiones, a parte de que no todo el mundo publica feeds válidados.

Se puede realizar un sencillo lector de feeds con PHP gracias a la librería SimpleXML (se necesita PHP5). Tan solo habrá que leer el feed y parsearlo, y luego acceder a sus elementos. Algo así como:

$data = @simplexml_load_string(file_get_contents($url));
if ($data) {
// Obtiene el los elementos <item>
$items = $data->xpath('//item');
}

Pero hay que tener en cuenta que el existen etiquetas como <content:encoded> que la librería no las leerá y recuperará tan fácilmente. Para ello deberemos mirar el xmlns correspondiente:

xmlns:content="http://purl.org/rss/1.0/modules/content/"

y leer la etiqueta de la siguiente manera:

foreach ($data as $item) {
$content = $item->children('http://purl.org/rss/1.0/modules/content/');
echo (string) trim($content->encoded);
}

Con este código se puede empezar a leer feeds, pero aún así, si necesitáis más, podéis mirar este post, que es donde he encontrado la solución al <content:encoded>.