Cuando trabajas con Laravel, seguir convenciones de nombrado consistentes no es solo cuestión de estilo, sino que ayuda a mantener tu código ordenado, comprensible y compatible con las herramientas del framework. Estas convenciones son especialmente útiles cuando trabajas en equipo o cuando otro desarrollador revisa tu código.

En este artículo encontrarás una guía básica y clara sobre cómo nombrar tus archivos y elementos en Laravel: controladores, modelos, migraciones, vistas, rutas y más.


🧠 ¿Qué son las convenciones de nombrado?

Antes de entrar en Laravel, es importante entender algunos patrones comunes de nombrado en programación:

🔤 Tipos de formatos

FormatoEjemploUso típico
camelCasenombreUsuarioVariables y métodos en PHP
PascalCaseNombreUsuarioClases y modelos
snake_casenombre_usuarioArchivos, migraciones, columnas
kebab-casenombre-usuarioURLs y nombres de carpetas web

👉 Estas reglas no son exclusivas de Laravel — se usan en múltiples lenguajes y frameworks — pero Laravel las adopta como estándar.


🗂️ Modelos: PascalCase

Los modelos representan entidades del dominio (por ejemplo, User, Producto, Factura). Deben usar PascalCase y singular.

✅ Correcto:

class User extends Model {}
class Producto extends Model {}

❌ Incorrecto:

class usuario extends Model {}       // minuscula inicial
class productos extends Model {}     // plural

📁 Migraciones: snake_case y en plural

Las migraciones crean o modifican tablas en la base de datos. El nombre de archivo debe describir la acción en snake_case.

🔹 Laravel automáticamente genera nombres como:

2026_02_10_123456_create_users_table.php

✔ Usa snake_case con verbos precisos:

MigraciónTabla afectada
create_posts_tableposts
add_status_to_orders_tableorders

🔹 Los nombres en inglés ayudan a mantener consistencia cuando usas paquetes o colaboras con desarrolladores internacionales.


🧠 Controladores: PascalCase con sufijo Controller

Los controladores manejan la lógica de las rutas. La convención en Laravel es:

📌 PascalCase + “Controller”

UserController
ProductoController
AuthController

Laravel hace esto automáticamente con su comando:

php artisan make:controller UserController

📜 Rutas: snake_case y verbs en inglés

Las rutas HTTP deben ser claras, descriptivas y preferiblemente en inglés:

Route::get('/users', 'UserController@index');
Route::post('/orders', 'OrderController@store');

Usar inglés en rutas garantiza consistencia y facilita la lectura por parte de cualquier desarrollador.


🖼️ Vistas (Blade): snake_case o kebab-case

Las vistas en resources/views pueden nombrarse de dos formas:

  • snake_case: user_profile.blade.php
  • kebab-case: user-profile.blade.php

Ambas son aceptables, aunque hay consenso en la comunidad por usar kebab-case en UI:

user-profile.blade.php
order-confirmation.blade.php

📚 Idiomas en el código: ¿Español o inglés?

Aunque tu aplicación esté en español, es recomendable que los nombres de tus clases, rutas y archivos estén en inglés. Esto ofrece varias ventajas:

✔ Laravel y muchos paquetes están en inglés
✔ Mejora compatibilidad con documentación y tutoriales
✔ Facilita que otros devs colaboren o revisen tu código

Los textos visibles de la app (traducciones, etiquetas UI, mensajes) sí pueden ir en español.


🧩 Tablas y columnas en la base de datos

  • Tablas en plural en snake_case:
users
posts
order_items
  • Columnas también en snake_case:
first_name
created_at
user_id

🔁 Resumen rápido

ElementoConvención
ModelosPascalCase
ControladoresPascalCaseController
Migracionessnake_case_desciptivo
Rutassnake_case (inglés)
Vistassnake_case / kebab-case
Tablas DBsnake_case plural
Columnas DBsnake_case

🎯 Conclusión

Seguir convenciones de nombrado en Laravel hace que tu código sea más:

✅ claro
✅ mantenible
✅ estandarizado
✅ compatible con herramientas y la comunidad

Esto no solo reduce bugs y duplicados, sino que también te prepara para colaborar sin fricciones en proyectos más grandes.

Categorizado en:

Fundamentos, Laravel,