2-convenciones nombrar variable
En Laravel, existen convenciones y buenas prácticas para nombrar controladores, modelos, métodos, variables y tablas de la base de datos. Estas convenciones ayudan a mantener la consistencia en el código y aprovechar al máximo las características de Laravel, como la inyección de dependencias y el ORM Eloquent.
1. Controladores
Nombre de clase: PascalCase (primera letra en mayúscula) y singular.
Sufijo:
Controller(ej:UserController,PostController).Ubicación:
app/Http/Controllers/.Métodos: camelCase (ej:
index,store,getUserPosts).
Ejemplo:
// app/Http/Controllers/UserController.php
namespace App\Http\Controllers;
class UserController extends Controller {
public function showUserProfile($id) {
// Lógica
}
}Rutas asociadas (en routes/web.php o routes/api.php):
Route::get('/user/{id}', [UserController::class, 'showUserProfile']);2. Modelos
Nombre de clase: PascalCase y singular (representa una entidad única).
Relación con la tabla: Por defecto, Laravel asume que el nombre de la tabla es el plural snake_case del modelo (ej:
User→users,BlogPost→blog_posts).Ubicación:
app/Models/(aunque en versiones antiguas estaba enapp/).
Ejemplo:
// app/Models/User.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
// Por defecto, asume que la tabla es 'users'
protected $fillable = ['name', 'email']; // Campos asignables masivamente
}Para definir una tabla manualmente:
protected $table = 'mis_usuarios'; // Si la tabla no sigue la convención3. Métodos (en clases)
camelCase: Para métodos públicos y privados.
Verbos claros: Usar
get,create,update,delete, etc., según la acción.
Ejemplo:
public function getUserById($id) { ... }
public function calculateTotal() { ... }
private function validateData() { ... }4. Variables
camelCase: Para variables locales y propiedades de clase.
Descriptivas: Evitar abreviaturas ambiguas.
Ejemplo:
$userCount = 10;
$isAdmin = true;
$postTitle = 'Laravel Conventions';5. Tablas de Base de Datos
snake_case: Minúsculas y separadas por guiones bajos.
Plural: Representan una colección de registros (ej:
users,post_comments).Claves foráneas:
singular_id(ej:user_id,post_id).
Ejemplo de migración:
Schema::create('post_comments', function (Blueprint $table) {
$table->id();
$table->foreignId('post_id')->constrained(); // Clave foránea
$table->string('comment_text');
$table->timestamps();
});6. Relaciones en Eloquent
Los métodos de relación en los modelos también usan camelCase y suelen ser descriptivos:
Ejemplo:
// En app/Models/User.php
public function posts() {
return $this->hasMany(Post::class); // Relación 1 a muchos
}
// En app/Models/Post.php
public function author() {
return $this->belongsTo(User::class, 'user_id'); // Relación inversa
}7. Convenciones adicionales
Archivos de configuración: snake_case (ej:
config/database.php).Vistas: kebab-case (ej:
resources/views/user-profile.blade.php).Traits: PascalCase con sufijo
Trait(opcional, ej:NotifiableTrait).
Resumen de convenciones
| Elemento | Convención | Ejemplo |
|---|---|---|
| Controladores | PascalCase + Controller | UserController |
| Modelos | PascalCase (singular) | Post, UserProfile |
| Métodos | camelCase | getUserById |
| Variables | camelCase | postCount |
| Tablas BD | snake_case (plural) | post_comments |
| Claves foráneas | snake_case (singular_id) | user_id |
Estas convenciones permiten que Laravel funcione con "magia" (como el autoenlace entre modelos y tablas), pero siempre puedes sobrescribirlas si es necesario.
Comentarios
Publicar un comentario