Opinión sobre PHP 5.3, lo bueno y lo malo

Julio 19, 2009

La reciente salida de PHP 5.3.0, a pesar de generar una gran cantidad de comentarios negativos sobre el hecho de que rompe muchas herramientas, es un paso mayor hacia PHP 6.0.0. Las quejas provienen generalmente del hecho de que unas mejoras en el soporte del código orientado objeto implican ser más estrictos sobre la forma en que deben ser usados los objetos o las clases dentro de una aplicación (por ejemplo no deja más instanciar una clase que sea abstracta “de facto”).

Entre las cosas buenas más resaltantes de esta nueva versión, contamos con la inclusión en la base del lenguaje de las extensiones intl (facilitadora de muchos temas de internacionalización), fileinfo (que permite de determinar, de manera confiable, el tipo de un archivo, lo que permite a su vez de filtrar mejor peligros al acceptar ficheros externos). También vemos la inclusión ahí de “closures” (construcción del lenguaje conocida de los desarrolladores JavaScript), de espacios de nombre (parece que mucha gente estuvieron esperando esto, y de verdad podría servir en Dokeos para, por ejemplo, separar mejor los ficheros de idiomas).

También suele mencionar que varias fuentes reportan (buscar “benchmark PHP 5.3″) que esta versión tiene una eficiencia superior.

Cualquier sea el asunto en favor o en contra de PHP 5.3.0, no hay mucha preocupación que tener de inmediato. Dokeos 1.8.6 está siendo probado por Issac  aquí (muy probablemente la versión 1.8.6.1 propondrá soporte completo de esta versión), pero de toda forma las empresas que proponen alojamiento de aplicaciones PHP necesitarán unos meses para pasar a esta nueva versión.


Traducciones con parámetros

Abril 16, 2009
Akelos

Akelos

i18n

i18n

La i18n (internationalization) de Akelos (framework PHP) nos permite incluir parámetros en la invocación. A continuación compartimos un ejemplo con ustedes:

.

Trabajaremos con el controlador product

Y el método greeting

archivo app/controller/product_controller.php
function greeting() {

}

.

En la vista (archivo app/views/product/greeting.tpl):
translate( 'Hello %user_name. Justice %question_mark', array('%user_name' => 'Osho', '%question_mark' => '?') );
?>

Aquí debemos prestar atención a los parámetros que se indican con el prefijo de porcentaje (‘%’). Y como segundo parámetro del método translate tenemos el arreglo con llaves y valores para los parámetros.

.

En los archivos de traducción se puede ser flexibles con la presencia y posición de las variables al interior de las expresiones.

Ej:

archivo app/locales/product/en.php
$dictionary['Hello %user_name. Justice %question_mark']='Hello %user_name. Justice %question_mark';

archivo app/locales/product/es.php
$dictionary['Hello %user_name. Justice %question_mark']='%user_name e. Justicia chu.';

Obtendríamos como resultado:
- Hello Joseph. Justice?
- Joseph e. Justicia chu.

De esta forma podemos ubicar las palabras en el lugar correspondiente de acuerdo a las reglas de cada lenguaje. Incluso prescindir de elementos como ciertos signos de puntuación que sólo son válidos en determinados idiomas.

También podemos reutilizar expresiones ya traducidas, así evitamos las variaciones en la traducción de frases muy similares. La clave es identificar patrones en las expresiones, cuando en la práctica escribimos repetidas veces lo mismo.

- Ha fallado el comando DELETE.
- Command EXECUTE has failed.

Y podemos dar por cerrada una etapa de traducción antes de terminar el proceso de desarrollo de la lógica de una solución.

- Le quedan 2 tareas por revisar.
- 1 task to do.