Se dice que cualquiera puede programar en PHP, y por suerte, es cierto. PHP se pone el vestido de quince este año (el 8/06/1995 fue publicado “Personal Home Page Tools” ), ideado originariamente por Rasmus Lerdorf para mostrar su CV dinámicamente, se encuentra entre los cinco lenguajes de programación más utilizados (ver) al día de la fecha. A pesar de las grandes críticas que se le hacen, existen plataformas enormes como Yahoo y Facebook basadas en este lenguaje.
Facebook pone a disposición mejoras al core de MySQL y extensiones PHP que permiten, junto a otras tecnologías, las millones de consultas que hacen los más de 380 millones de usuarios (enero 2010), una de estas mejoras es XHP, presentada en febrero de este año.
¿Qué es XHP?
Es una extensión PHP que hace más fácil de leer la sintaxis del lenguage y ayuda a evitar ataques XSS por POST. Esto lo hace mediante la interpretación de fragmentos de documentos XML, similiar a lo que hace ECMAScript con DOM. Además es un sistema de plantillas, ya que, como se sabe, PHP no es un lenguaje muy bueno para la generación de HTML.
Facebook lanzó la -ya muerta- aplicación Facebook Lite totalmente escrita en PHP.
Un ejemplo de aplicación (brindado por Facebook):
<?php
if ($_POST['name']) {
?>
<span>Hello, <?=$_POST['name']?>.</span>
<?php
} else {
?>
<form method="post">
What is your name?<br>
<input type="text" name="name">
<input type="submit">
</form>
<?php
}
Esta simple porción de código podría traernos dos problemas: Primero, la introducción de XSS por POST y segundo, el error que nos daría al olvidar de cerrar algún tag de PHP.
Instalación (sobre Ubuntu)
Para evitar de compilarlo junto con el source tenés que tener instalado php5-dev, el command line de PHP5 (php5-cli), flex, bison y phpize (sudo apt-get install ….)
cd /tmp/ wget http://github.com/facebook/xhp/tarball/1.3.9 cd /usr/src root@ubuntu:/tmp# tar -zxvf facebook-xhp-1.3.9-0-gc78f8f2.tar.gz root@ubuntu:/tmp# cd facebook-xhp-c78f8f2/ root@ubuntu:/tmp/facebook-xhp-c78f8f2# phpize root@ubuntu:/tmp/facebook-xhp-c78f8f2# ./configure root@ubuntu:/tmp/facebook-xhp-c78f8f2# make root@ubuntu:/tmp/facebook-xhp-c78f8f2# make test root@ubuntu:/tmp/facebook-xhp-c78f8f2# make install
Modificar los archivos de configuración:
root@ubuntu:# vi /etc/php5/apache2/php.ini root@ubuntu:# vi /etc/php5/cli/php.ini #Necesario únicamente para CGI
Agregar la linea extension=xhp.so
Luego reiniciar el Apache para que tome XHP como módulo incorporado.
root@ubuntu:# php -r 'echo "XHP!\n"; exit; <a />;' XHP!
Si aparece XHP! está todo listo para empezar a probar la extensión.
Más información y ejemplos en Github de XHP
<?php
if ($_POST['name']) {
?>
<span>Hello, <?=$_POST['name']?>.</span>
<?php
} else {
?>
<form method="post">
What is your name?<br>
<input type="text" name="name">
<input type="submit">
</form>
<?php
}

Quedó muy bueno, y con muy poco código. Visualmente agradable, concatena los datos de las tablas provincia y localidad.