Estándares de programación en PHP Volumen I

Saludos de nuevo queridos lectores, cómo nos gusta teneros de vuelta. El rootie de hoy va a ser el comienzo de una saga muy útil. Vamos a hablar de estándares de programación establecidos por el Framework PHP Grupo de Interoperabilidad con la idea de unificar los puntos en común de nuestros proyectos y encontrar maneras para trabajar mejor conjuntamente.

Introducción

Vamos a empezar esta serie por uno de los aspectos habitualmente más descuidados, y, sin embargo, más importantes de la programación: El estilo del código.

El estilo del código es especialmente importante si estamos trabajando en un equipo de desarrollo o si nuestro proyecto lo van a usar en algún momento otros desarrolladores. Pero, cuando trabajamos en un proyecto propio, también es una buena costumbre usar un estilo de código claro y optimizado. Esta buena práctica nos ayudará posteriormente a revisar mejor el código y a entenderlo si en algún momento tenemos que modificarlo o queremos reutilizarlo.

Una vez escuché decir:

Hoy sé lo que hace este código, mañana sólo Dios lo sabrá. – programador anónimo

 

Esta propuesta es para que mañana tú también sepas con facilidad lo que hace tu propio código.

PHP-FIG y los estándares de programación

En esta serie vamos a repasar los estándares de programación con la idea de unificar los puntos en común de nuestros proyectos y encontrar maneras para trabajar mejor conjuntamente.

Empezamos con los estándares de programación en PHP propuestos por el PHP-FIG (Framework PHP Grupo de Interoperabilidad) – maldita sea, no es nada fácil traducir PHP Framework Interop Group

A partir de este momento veremos las principales características del concepto PSR (PHP Standard Recommendation) y nos referiremos a ellas por sus siglas. En este rootie en concreto nos vamos a centrar en PSR-1 y PSR-4.

PSR-1 – Estándar básico de estilos de código

Esta sección de la norma comprende lo que debe considerarse como elementos de codificación estándar que se requieren para garantizar un alto nivel técnico de interoperabilidad entre el código PHP compartido. Está orientada al contenido de los ficheros PHP y a los nombres de las clases y métodos.

Fuente: http://www.php-fig.org/psr/psr-1/

Su objetivo es

  • DEBEN usarse únicamente las etiquetas <?php y <?=.
  • DEBE usarse sólo UTF-8 sin BOM (Byte Order Mask) para código PHP.
  • Un fichero debería contener o bien estructuras y símbolos (clases, funciones, constantes, etc…) o bien partes de la lógica secundaria (informes, configuración, etc..) pero NO DEBERÍAN hacerse las dos cosas.
  • Los Namespaces y las clases DEBEN cumplir el estándar PSR-4, el cual veremos a continuación.
  • Los nombres de las clases DEBEN utilizar la notación StudlyCaps.
  • Las constantes de las clases DEBEN declararse en MAYÚSCULAS usando guiones bajos como separadores.
  • Los nombres de los métodos DEBEN declararse en notación camelCase. (Ej: getAllUsers(), generatePdfFile())
  • Para los nombres de las propiedades no se define una recomendación concreta. A excepción de que la convención que se elija se mantenga para todo el proyecto, clase o método.

    StudlyCaps es una notación en la que se alternan mayúsculas y minúsculas por algún patrón concreto.
    Cuando utilizamos camelCase se escribe la primera letra de cada palabra con mayúsculas (Habitualmente la primera letra de todas suele ir en minúsculas).
    En snake_case se separan las palabras sustituyendo los espacios por guiones bajos.

En en este estándar StudlyCaps y camelCase se diferencian únicamente en el uso de la primera letra en minúsculas para camelCase.

PSR-4 – Estándar de Autocarga

Este PSR describe una especificación para las clases de carga automática – autoloaders – desde las rutas de archivo. Es completamente interoperable, y puede utilizarse además de cualquier otra especificación de autoloading, incluyendo PSR-0. Este PSR está orientado a los nombres de los Namespaces, Clases y Ficheros. Su objetivo es facilitar la carga automática de clases.

Fuente: http://www.php-fig.org/psr/psr-4/

  • Las rutas completas de los Namespaces DEBEN tener la estructura Proveedor\Namespace\NombreDeLaClase. (VendorName\Namespace\ClassName)Por ejemplo:

    Proveedor: Dropbox
    Namespace: AuthBase
    Nombre de la Clase: Client
  • Todas las rutas DEBEN tener un Proveedor (Vendor Name).
  • Los Namespaces pueden estar compuestos de todos los Sub-Namespaces que se desee.
  • Todas las rutas DEBEN acabar en un Nombre de Clase (Class Name).
  • Los guiones bajos no tienen ningún significado especial (modificación sobre PSR-0).
  • Se pueden combinar mayúsculas y minúsculas.
  • Todos los nombres de clase DEBEN usar un estilo case-sensitive (sensible a mayúsculas y minúsculas).

Cada namespace puede tener tantos sub-namespaces como se quiera.

Todos los archivos deben tener la extensión .php.

Los nombres de los namespaces o clases deben ser ordenados alfabéticamente.

En el siguiente enlace podéis ver varios ejemplos correctos de implementación de PSR-4: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

mi verdadera recomendación de PHP

 

Lo dicho, os recomendamos encarecidamente seguir los estándares PSR para que el código de esta, nuestra comunidad de developers, esté cada vez más unificado (con todas las ventajas ya mencionadas anteriormente que eso conlleva).

Nos vemos en el siguiente rootie, ¡pasadlo bien y programad mucho!

Posted in PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *