Convenciones de Nombres

Clases

Zend Framework se estandariza una convencion de nombres de clases donde los nombres de las clases apuntan directamente a las carpetas en las que estan contenidas. La carpeta raiz de la biblioteca estandar de Zend Framework es la carpeta "Zend/", mientras que la carpeta raíz de las bibliotecas extra de Zend Framework es la carpeta "ZendX/". Todas las clases de Zend Framework están almacenadas jerárquicamente bajo estas carpetas raíz.

Los nombres de clases pueden contener sólo caracteres alfanuméricos. Los números están permitidos en los nombres de clase, pero desaconsejados en la mayoría de casos. Las barras bajas (_) están permitidas solo como separador de ruta (el archivo " Zend/Db/Table.php " debe apuntar al nombre de clase " Zend_Db_Table ").

Si el nombre de una clase esta compuesto por mas de una palabra, la primera letra de cada palabra debe aparecer en mayúsculas. Poner en mayúsculas las letras siguientes no está permitido, ej: "Zend_PDF" no está permitido, mientras que " Zend_Pdf " es admisible.

Estas convenciones definen un mecanismo de pseudo-espacio de nombres para Zend Framework. Zend Framework adoptará la funcionalidad PHP de espacio de nombres cuando esté disponible y sea factible su uso en las aplicaciones de nuestros desarrolladores.

Vea los nombres de clase en las bibliotecas estandar y adicionales (extras) como ejemplos de esta convención de nombres.

Nota

IMPORTANTE: El código que deba distribuirse junto a las bibliotecas de Zend Framework, pero no forma parte de las bibliotecas estándar o extras de Zend (e.g.: código o bibliotecas que no estén distribuídas por Zend) no puede empezar nunca por "Zend_" o "ZendX_".

Clases Abstractas

En general, las clases abstractas siguen las mismas convenciones que las clases , con una regla adicional: Los nombres de las clases abstractas deben acabar con el término, "Abstract", y ese término no debe ser precedida por un guión bajo. Ejemplo, Zend_Controller_Plugin_Abstract es considerado un nombre no válido, pero Zend_Controller_PluginAbstract o Zend_Controller_Plugin_PluginAbstract serian nombres válidos.

Nota

Esta convención de nombres es nuevo con la versión 1.9.0 de Zend Framework. Las clases que preceden aquella versión no pueden seguir esta regla, pero serán renombradas en el futuro a fin de cumplir la regla.

Interfaces

En general, las clases abstractas siguen las mismas convenciones que las classes , con una regla adicional: Los nombres de las interfaces opcionalmente pueden acabar con el término, "Interface",pero término no debe ser precedida por un guión bajo. Ejemplo, Zend_Controller_Plugin_Interface es considerado un nombre no válido, pero Zend_Controller_PluginInterface o Zend_Controller_Plugin_PluginInterface serian nombres válidos.

Si bien esta regla no es necesaria, se recomienda encarecidamente su uso, ya que proporciona una buena refrencia visual a los desarrolladores, como saber que archivos contienen interfaces en lugar de clases.

Nota

Esta convención de nombres es nuevo con la versión 1.9.0 de Zend Framework. Las clases que preceden aquella versión no pueden seguir esta regla, pero serán renombradas en el futuro a fin de cumplir la regla.

Nombres de Archivo

Para cualquier otro archivo, sólo caracteres alfanuméricos, barras bajas (_) y guiones (-) están permitidos. Los espacios en blanco están estrictamente prohibidos.

Cualquier archivo que contenga código PHP debe terminar con la extensión " .php ", con la excepción de los scripts de la vista. Los siguientes ejemplos muestran nombres de archivo admisibles para clases de Zend Framework..:

Zend/Db.php

Zend/Controller/Front.php

Zend/View/Helper/FormRadio.php

Los nombres de archivo deben apuntar a nombres de clases como se describe arriba.

Funciones y Métodos

Los nombres de funciones pueden contener únicamente caracteres alfanuméricos. Las guiones bajos (_) no estan permitidos. Los números están permitidos en los nombres de función pero no se aconseja en la mayoría de los casos.

Los nombres de funciones deben empezar siempre con una letra minúscula. Cuando un nombre de función consiste en más de una palabra, la primera letra de cada nueva palabra debe estar en mayúsculas. Esto es llamado comúnmente como formato "camelCase".

Por norma general, se recomienda la elocuencia. Los nombres de función deben ser lo suficientemente elocuentes como para describir su propósito y comportamiento.

Estos son ejemplos de nombres de funciones admisibles:

filterInput()

getElementById()

widgetFactory()

Para la programación orientada a objetos, los métodos de acceso para las instancias o variables estáticas deben ir antepuestos con un "get" o un "set". Al implementar el patron de diseño, tales como el patrón singleton o el patrón factory, el nombre del método debe contener en la práctica el nombre del patrón para describir su comportamiento de forma más completa.

Para el caso en que los métodos son declarados con el modificador "private" o "protected", el primer carácter del nombre de la variable debe ser una barra baja (_). Este es el único uso admisible de una barra baja en un nombre de método. Los métodos declarados como públicos no deberían contener nunca una barra baja.

Las funciones de alcance global (también llamadas "funciones flotantes") están permitidas pero desaconsejadas en la mayoría de los casos. Considere envolver esas funciones en una clase estática.

Variables

Los nombres de variables pueden contener caracteres alfanuméricos. Las barras bajas (_) no están permitidas. Los números están permitidos en los nombres de variable pero no se aconseja en la mayoría de los casos.

Para las variables de instancia que son declaradas con el modificador "private" o "protected", el primer carácter de la variable debe ser una única barra baja (_). Este es el único caso admisible de una barra baja en el nombre de una variable. Las variables declaradas como "public" no pueden empezar nunca por barra baja.

Al igual que los nombres de funciones (ver sección 3.3), los nombres de variables deben empezar siempre con una letra en minúscula y seguir la convención "camelCaps".

Por norma general, se recomienda la elocuencia. Las variables deberían ser siempre tan elocuentes como prácticas para describir los datos que el desarrollador pretende almacenar en ellas. Variables escuetas como " $i " y " $n " están desaconsejadas, salvo para el contexto de los bucles más pequeños. Si un bucle contiene más de 20 líneas de código, las variables de índice deberían tener nombres más descriptivos.

Constantes

Las constantes pueden contener tanto caracteres alfanuméricos como barras bajas (_). Los números están permitidos.

Todos las letras pertenecientes al nombre de una constante deben aparecer en mayúsculas.

Las palabras dentro del nombre de una constante deben separarse por barras bajas (_). Por ejemplo, EMBED_SUPPRESS_EMBED_EXCEPTION está permitido, pero EMBED_SUPPRESSEMBEDEXCEPTION no.

Las constantes deben ser definidas como miembros de clase con el modificador "const". Definir constantes en el alcance global con la función "define" está permitido pero no recomendado.