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
| Formato | Ejemplo | Uso típico |
|---|---|---|
| camelCase | nombreUsuario | Variables y métodos en PHP |
| PascalCase | NombreUsuario | Clases y modelos |
| snake_case | nombre_usuario | Archivos, migraciones, columnas |
| kebab-case | nombre-usuario | URLs 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ón | Tabla afectada |
|---|---|
create_posts_table | posts |
add_status_to_orders_table | orders |
🔹 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
| Elemento | Convención |
|---|---|
| Modelos | PascalCase |
| Controladores | PascalCaseController |
| Migraciones | snake_case_desciptivo |
| Rutas | snake_case (inglés) |
| Vistas | snake_case / kebab-case |
| Tablas DB | snake_case plural |
| Columnas DB | snake_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.