Convenciones en PHP (El Lenguaje)

 PHP no impone una única convención obligatoria, pero la comunidad y los manuales oficiales recomiendan ciertos estilos para evitar conflictos y mejorar la legibilidad.

1. Clases, Interfaces y Traits

  • Convención: PascalCase (también conocido como StudlyCaps). Cada palabra comienza con mayúscula y no hay guiones bajos.

  • Ejemplos:

    • class Usuario {}

    • class UsuarioPremium {}

    • interface ProveedorCorreo {}

    • trait ValidadorDatos {}

  • Nota: La documentación oficial de PHP sugiere este estilo para las clases . PEAR, un estándar histórico, también lo recomienda .

2. Métodos

  • Convención: camelCase. La primera palabra comienza con minúscula y las siguientes palabras con mayúscula, sin guiones bajos .

  • Ejemplos:

    • public function obtenerNombre() {}

    • public function enviarNotificacionPush() {}

    • private function calcularTotal() {}

3. Propiedades (Atributos de una clase)

  • Convención: Históricamente ha habido cierta variabilidad, pero la tendencia moderna, especialmente con PHP 7.4+ y tipado fuerte, es usar camelCase.

  • Ejemplos:

    • public $nombreUsuario;

    • protected $fechaCreacion;

    • private $esActivo;

  • Nota histórica: Algunas guías antiguas recomendaban snake_case para propiedades  o el uso de guiones bajos para propiedades privadas/protegidas ($_nombre, pero esto es cada vez menos común en el código PHP moderno, que prefiere la simplicidad de camelCase.

4. Constantes de Clase

  • Convención: MAYÚSCULAS_SNAKE_CASE. Todas las letras en mayúscula y palabras separadas por guiones bajos .

  • Ejemplos:

    • public const VERSION = '1.0';

    • private const MAXIMO_INTENTOS = 5;

5. Funciones Globales (No recomendado dentro de clases)

  • Convención: snake_case. Letras minúsculas y palabras separadas por guiones bajos. Es el estilo que usa PHP internamente (ej. str_replacearray_merge.

  • Ejemplos:

    • function conecta_base_datos() {}

Convenciones en Laravel (El Framework)

Laravel es famoso por su "magia" y convenciones sobre configuración. Seguir sus reglas de nomenclatura hace que todo funcione de manera fluida y automática .

ConceptoConvenciónEjemplo(s)¿Por qué?
ModelosSingular y PascalCaseUserBlogPostOrderItem Laravel asume que la tabla en la base de datos será la versión en snake_case y plural del nombre de la clase (ej. blog_posts para BlogPost).
ControladoresPascalCase con sufijo ControllerUserControllerBlogPostControllerApiProductController Es la convención estándar para identificar rápidamente qué archivos son controladores.
Tablas DBsnake_case y pluralusersblog_postsorder_items Coincide con la convención de Laravel para enlazar automáticamente un modelo a su tabla.
Columnas DBsnake_casefirst_namecreated_atuser_idis_active Es el estándar SQL y Laravel lo maneja a la perfección, especialmente con nombres compuestos.
Métodos en ControladorescamelCaseindex()show()store()getUserPosts() Sigue la convención de PHP para métodos. Los métodos de recursos (indexcreate, etc.) son la excepción por ser parte de la API REST de Laravel.
Archivos de Migraciónsnake_case con timestamp2024_01_15_123456_create_blog_posts_table.php El timestamp asegura el orden de ejecución. El nombre describe claramente la acción.
Nombres de Rutassnake_caseblog.indexuser.profile.showdashboard.analytics.export Son legibles y fáciles de usar en los helpers de Laravel (route('blog.index')).
Archivos Blade (Vistas)snake_caseindex.blade.phpshow.blade.phpuser-profile.blade.php Mantiene la consistencia con otros archivos de configuración y nombres de ruta.
Variables localescamelCase$blogPost$activeUsers$isValid Es el estándar de PHP para variables.

Un Resumen Visual Rápido

Para que lo tengas siempre presente, esta imagen de Tajammal Amin en LinkedIn lo resume de forma excelente :

  • 🐫 camelCase: Variables locales, métodos de controladores, parámetros de request.

  • 🐍 snake_case: Tablas y columnas DB, parámetros de ruta, claves de configuración.

  • 📛 PascalCase: Nombres de clases (Modelos, Controladores, Middleware).

  • 🔠 MAYÚSCULAS_SNAKE_CASE: Constantes, variables de entorno.

  • ➖ kebab-case: Nombres de rutas (en algunos contextos, aunque Laravel prefiere snake_case) y archivos de vista.

En Resumen

  1. Para PHP Puro: Usa PascalCase para clases y camelCase para métodos y propiedades. Es limpio y moderno.

  2. Para Laravel: Sigue las convenciones del framework al pie de la letra. Esto es clave. Cuando nombras tu modelo BlogPost y tu tabla blog_posts, Laravel los conecta automáticamente. Cuando nombras tu controlador BlogPostController, el framework y otros desarrolladores saben instantáneamente qué hace.

Adoptar estas convenciones desde el principio hará que tu código sea mucho más fácil de leer, mantener y escalar, tanto para ti como para cualquier otra persona que trabaje en el proyecto.

Comentarios

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API