H2O es un sistema de plantillas para PHP que nos facilita la realización de la parte de vistas del desarrollo de nuestra aplicación con formato MVC.
La sintaxis es sencilla, ya que se basa en el uso de etiquetas para variables ( {{ variable }} ) y para bloques/instrucciones ( {% if condicion %} … {% endif %} ).
Yo no soy partidario de usar estos tipos de lenguajes de plantillas, porque no dan buen rendimiento y porque es aprender algo nuevo y diferente. Claro que, en algunos proyectos, la realización de las páginas las hacen personas sin conocimientos de desarrollo web o PHP, por lo que estos sistemas les facilitan la labor. H2O
Un buen y sencillo ejemplo de cómo crear miniaturas de imágenes (thumbnails) con sombra y borde redondeado usando Imagick. No olvidar que siempre hay que tener en cuenta que la manipulación de imágenes es algo costoso en rendimiento, y más si usamos Imagick en vez de gd, sÃ, permite más funcionalidades pero es más pesado.
El resultado serÃa el siguiente:
<?php
// Parsear la imagen
$im = new Imagick( 'imagen.png' );
// Redimensionar la imagen
$im->thumbnailImage( 200, null );
// Esquinas redondeadas
$im->roundCorners( 5, 5 );
// Clonamos el objeto actual
$shadow = $im->clone();
// Cambiamos el color de la imagen a negro (color de la sombra)
$shadow->setImageBackgroundColor( new ImagickPixel( 'black' ) );
// Creamos la sombra
$shadow->shadowImage( 80, 3, 5, 5 );
// Superponemos la original sobre la sombra
$shadow->compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 );
// Mostramos la imagen
header( "Content-Type: image/png" );
echo $shadow;
?>
Ahora viene la parte más complicada, y digo complicada porque sinceramente he tenido que mirar el código porque algo me fallaba cuando seguía lo que decía la documentación.
El nombre del fichero JSON tiene el siguiente formato [dominio de traducción]-[idioma]-[handler del fichero].json, total nada.
Dominio será el que usemos para traducir, en el ejemplo sería mi-plugin:
__( 'Hola que tal', 'mi-plugin' );
Idioma es el código del idioma, en este caso es_ES
Y por último el handler del fichero es el primer parámetro que usamos en wp_enqueue_script
Lo podemos ver todo en un ejemplo final:
wp_enqueue_script(
'mi-plugin-handler', // El handler mencionado anteriormente
$blocks_script, // Nuestro path
[
'wp-i18n', // De referenciar al menos a wp-i18n
],
);
wp_set_script_translations( 'mi-plugin-handler, 'mi-plugin', plugin_dir_path( __FILE__ ) . 'languages' );
Algo que nos pasa a los que aprendemos PHP por nuestra cuenta es coger fallos por malas costumbres, otras veces la gente tiene fallos por falta de conocimiento. Aquà os paso resumida una lista de los errores más comunes que se comenten a la hora de programar en PHP.
No escapar lo que nos llegar por parámetro: para evitar el cross-site scripting es necesario escapar las posibles entradas HTML que nos lleguen por parámetro. Si al introducir el usuario nos metieran:
<script>...$lt/script$gt;
serÃa necesario escapar las entidades HTML para evitar ataques. Para ello se usarÃa el siguiente código:
htmlspecialchars($_GET['username'], ENT_QUOTES)
No escapar las entradas de consultas SQL: para evitar SQL-injections es necesario escapar antes el contenido de las entradas que pasamos a nuestras consultas SQL. Por ejemplo, tendrÃamos que crearnos una función que escapara las comillas simples.
Uso incorrecto de las funciones para la cabecera HTTP (header(), session_start() y setcookie()): muchas veces cuando desarrollanos nos encontramos con un mensaje de error que dice que ya se ha mandado la cabecera y que no se puede añadir más información. Esto es debido a que las funciones de cabecera (header(), session_start(), setcookie()) se tienen que usar al principio del script, antes de mandar nada a la salida.
No controlar lo que añades mediante require o include: se trata de no comenter el error de incluir un fichero cuya ruta se pasa por parámetro, ya que aunque nosotros seamos quienes pongan ese valor en el parámetro, puede llegar alguien y cambiar la ruta y pasar otro fichero que no sea de fiar.
Errores de sintaxis: bueno, aquà el autor del artÃculo, se ha quedado un tanto agusto. Todo el mundo comete errores de sintaxis cuando programa, ya sea en PHP, C, .NET o cualquier otro lenguaje de programación. Yo si que comentaria un error que suelo cometer, que es el escribir mal una variable y que el script no falle (como ocurrirÃa en Java), pero que se obtengan datos incorrectos.
No usar la orientación a objetos: desde la versión 4 los objetos se admiten en PHP, en PHP5 se mejoró su utilización. Debemos aprovecharnos de esas posibilidades.
No usar frameworks: no reinventemos la rueda, si ya hay un framework que nos gestiona la base de datos, los errores y otras cosas, no pierdas el tiempo en implementarlo tu mismo.
Desconocer funcionalidades: PHP dispone de muchas funcionalidades en su core o en su librerÃas, cuantas más funcionalidades conozcas, menos tiempo perderas en el desarrollo.
Usar versiones antiguas de PHP: tiene dos inconvenientes, que desaprovechas nuevas funcionalidades y corres el peligro de no tener todos los bugs parcheados.
Doble escapado de comillas: es posible encontrar en código PHP algo asÃ: \’ o \”. Esto suele ocurrir cuando se desarrolla con magic_quotes off y se instala en un servidor con magic_quotes on.
PHP-FPM (FastCGI Process Manager) es una alternativa a PHP FastCGI que incluye algunas características adicionales como:
Administración de procesos, pudiendo pararlos y arrancarlos
Posibilidad de empezar procesos con diferente uid, gid, chroot, entorno o php.ini
Logs
Reinicio de emergencia
Soporte para upload acelerado
Slowlog
fastcgi_finish_request(), una función especia que ternima la petición, envía los datos al cliente (flush) y continúa realizando otra función (codificación de vídeo, proceso de estadísticas, …)