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.

  • SufijoController (ej: UserControllerPostController).

  • Ubicaciónapp/Http/Controllers/.

  • Métodos: camelCase (ej: indexstoregetUserPosts).

Ejemplo:

php
Copy
Download
// 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):

php
Copy
Download
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 → usersBlogPost → blog_posts).

  • Ubicaciónapp/Models/ (aunque en versiones antiguas estaba en app/).

Ejemplo:

php
Copy
Download
// 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:

php
Copy
Download
protected $table = 'mis_usuarios'; // Si la tabla no sigue la convención

3. Métodos (en clases)

  • camelCase: Para métodos públicos y privados.

  • Verbos claros: Usar getcreateupdatedelete, etc., según la acción.

Ejemplo:

php
Copy
Download
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:

php
Copy
Download
$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: userspost_comments).

  • Claves foráneassingular_id (ej: user_idpost_id).

Ejemplo de migración:

php
Copy
Download
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:

php
Copy
Download
// 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

ElementoConvenciónEjemplo
ControladoresPascalCase + ControllerUserController
ModelosPascalCase (singular)PostUserProfile
MétodoscamelCasegetUserById
VariablescamelCasepostCount
Tablas BDsnake_case (plural)post_comments
Claves foráneassnake_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

Entradas más populares de este blog

8-Creación de una API RESTful con Laravel

02 -Rutas en Laravel

3-Rutas