Symfony 2 requiere configurar la zona horaria en php.ini

Tras instalar Symfony 2 deberemos proceder a comprobar si el servidor cumple los requisitos necesarios para su ejecución. Esto lo podemos hacer con el comando:

php app/check.php

Muy probablemente nos aparezca el error siguiente:

ERROR    date.timezone setting must be set

El error se debe a que Symfony 2 necesita saber la zona horaria en la que se ejecuta el servidor. Para hacer esto tan solo debemos modificar los archivos de configuración de php editando la clave date.timezone. Modificaremos el que usa el servidor Apache y el que usa php en la línea de comandos. Estos ficheros se pueden abrir usando los siguientes comandos.

nano /etc/php5/apache2/php.ini
nano /etc/php5/cli/php.ini

En cada uno de los ficheros php.ini buscaremos la clave que configura la zona y la cambiaremos por la que nos corresponda. Por ejemplo buscamos la cadena de texto en cada php.ini:

;date.timezone =

Y para la zona horaria de Europa/Madrid  lo cambiamos por:

date.timezone = "Europe/Madrid"

Prestad atención a retirar el punto y coma al inicio de línea. Si en la busqueda no aparecierá la clave simplemente a la añadimos al final del  fichero de configuraón. El cambio lo haremos en los dos php.ini. Después reiniciamos el servidor con:

service apache2 restart

Como paso final probamos de nuevo la configuracion de Symfony 2 para ver si el  problema se resolvió, usando el comando:

php app/check.php

Si nuestra zona no corresponde a Europa/Madrid podemos usar el siguiente comando para orientarnos sobre las posibles zonas disponibles:

ls /usr/share/zoneinfo/

Symfony 2 permisos cache y logs

Un apunte breve para resolver los problemas de permisos con Symfony 2 en las carpetas cache y logs. Estas carpetas son necesarias para el funcionamiento de Symfony y si el framework no puede escribir en ellas no podrá funcionar. Para cambiar los permisos usaremos los siguientes comandos en desde un terminal.

rm -rf app/cache/*
rm -rf app/logs/*
chmod 777 app/cache
chmod 777 app/logs

De este modo el servidor web ya podrá escribir en estas carpetas.

Convenciones en código Symfony 2

Cuando se programa en php conviene mantener la coherencia siguiendo unas convenciones en el código que facilitan la lectura ulterior. Al utilizar las mismas convenciones en el código es más fácil para nosotros y para otros programadores poder utilizar el mismo código. De esta forma el código es más legible, más fácil de mantener. Así podemos aprovecharnos del trabajo ya desarrollado por otros desarrolladores e incluirlo en nuestros proyectos. Y otros pueden hacer lo mismo con nuestro código.

Symfony sigue los estándares definidos en los documentos psr-0 psr-1 y psr-2. Lo siguiente es un resumen traducido de estos documentos.

General

Los ficheros deben usar solo las etiquetas de apertura php  <?php o <?=

Los ficheros deben usar solo UTF-8 sin BOM en el código php. El BOM es un residuo que permite a algunos editores de texto identificar la codificación.

Los ficheros deben usar el formato de fichero Unix LF (lineFeed) en vez del usado en sistemas DOS (carryReturn).

Los ficheros deberían o declarar símbolos (clases, funciones, constantes etc) o producir efectos (cómo generar salida, cambiar configuraciones, etc.) pero no ambos a la vez.

Los nombres de clases deben ser declarados con estilo StudlyCaps.

La declaración de las constantes en una clase debe usar letras mayúsculas con subrayado como separador.

Los nombres de los métodos deben ser declarados en camelCase.

Estructura

El código debe usar cuatro espacios para la identación en vez de usar el tabulado. Esto minimiza problemas con otras herramientas de desarrollo.

Las líneas podrían tener 80 caracteres o menos evitando tener más de 120 caracteres.

Las llaves de apertura deben ir en la siguiente línea y la llave de cierre debe ir en la siguiente línea después del cuerpo.

Las llaves de apertura en las estructuras de control debe ir en la misma línea y las llaves de cierre deben de ir después del cuerpo.

Los paréntesis en las estructuras de control no deben usar espacios antes o después.

Añadir un solo espacio después de cada limitador de coma.

Añadir un solo espacio alrededor de los operadores (==, &&, …)

Añadir una línea en blanco antes de una declaración de return, a no ser que esté dentro de una declaración como un grupo como if.

Usa llaves para indicar  el control de la estructura sin tener en cuenta el número de declaraciones que el grupo pueda contener.

Define una clase por fichero. Esto no aplica para clases de ayuda privadas que no se pretenden instanciar desde fuera y por lo tanto no concierne al estándar PSR-0.

Declara las propiedades de clase antes que los propios métodos de clase.

Declara los métodos públicos primero, después los métodos protegidos y finalmente los métodos privados.

Convenciones los nombres

Usa el formato de camelCase, sin subrayados para variables, funciones y nombres de métodos y sus argumentos

Usa subrayados para los nombres de opciones y nombres de parámetros.

Usa namespaces para todas clases.

Añade el sufijo Interface a los interfaces.

Utiliza caracteres alfanuméricos y subrayados para nombres de ficheros

Documentación

Añadir bloques PHPDoc a todas clases métodos y funciones.

El texto es una sintesis traduccida de los siguientes documentos: PSR-0PSR-1PSR-2 y codeStandars.