Menu
Coddy logo textTech

Autoloader de Composer

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy. Leçon 13 sur 91.

Écrire votre propre chargeur automatique fonctionne, mais les vrais projets PHP utilisent Composer pour gérer automatiquement le chargement automatique. Composer lit la configuration de votre projet et génère un chargeur automatique optimisé qui respecte les normes PSR-4.

La configuration se trouve dans un fichier composer.json à la racine de votre projet. Voici comment définir les règles de chargement automatique :

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Cela indique à Composer que toute classe commençant par App\ doit être chargée depuis le répertoire src/. Après cette configuration, Composer génère les fichiers de chargement automatique dans un répertoire vendor/.

Pour utiliser l’autoloader de Composer, vous n’avez besoin que d’une seule ligne en haut de votre fichier d’entrée :

<?php
require 'vendor/autoload.php';

use App\Models\User;
use App\Services\Logger;

$user = new User("Alice");
$logger = new Logger();

Cette seule instruction require gère le chargement de toutes les classes de votre projet. Vous pouvez définir plusieurs mappages d’espaces de noms si nécessaire :

{
    "autoload": {
        "psr-4": {
            "App\\": "src/",
            "Tests\\": "tests/"
        }
    }
}

Point clé : l’autoloader de Composer élimine les inclusions manuelles de fichiers et garantit un chargement cohérent des classes dans tout votre projet. Il s’agit de l’approche standard utilisée par pratiquement toutes les applications et tous les frameworks PHP modernes.

challenge icon

Défi

Facile

Construisons une petite application qui utilise l’approche de chargement automatique de Composer pour organiser les classes dans plusieurs fichiers. Tu simuleras la structure du code d’un véritable projet PHP avec des espaces de noms PSR-4 et un chargeur automatique central.

Tu vas créer quatre fichiers qui fonctionnent ensemble :

  • src/Models/Product.php : définir une classe Product dans l’espace de noms App\Models. Elle doit posséder les propriétés public $name et public $price, un constructeur qui accepte et définit ces deux valeurs, ainsi qu’une méthode getInfo() qui renvoie "[name]: $[price]".
  • src/Models/Customer.php : définir une classe Customer dans l’espace de noms App\Models. Elle doit posséder une propriété public $name, un constructeur qui accepte et définit le nom, ainsi qu’une méthode greet() qui renvoie "Welcome, [name]!".
  • vendor/autoload.php : créer un chargeur automatique simple à l’aide de spl_autoload_register qui imite le comportement de Composer. Il doit associer le préfixe d’espace de noms App\ au répertoire src/, convertir les séparateurs d’espace de noms en séparateurs de répertoires et ajouter .php pour charger le fichier correct.
  • index.php : il s’agit de ton fichier d’entrée. Exiger le chargeur automatique depuis vendor/autoload.php sur une seule ligne, puis utiliser le mot-clé use pour importer App\Models\Product et App\Models\Customer. Créer un Product avec le nom "Laptop" et le prix 999, ainsi qu’un Customer avec le nom "Alice". Afficher le résultat de l’appel à greet() sur le client et à getInfo() sur le produit (chacun sur sa propre ligne).

Le concept clé ici est que ton fichier index.php n’a besoin que d’une seule instruction require pour charger le chargeur automatique ; ensuite, toutes les classes sont chargées automatiquement lorsque tu les utilises. C’est exactement ainsi que fonctionnent les frameworks et les applications PHP modernes avec Composer.

Essayez vous-même

<?php
// TODO: Inclure l'autoloader depuis vendor/autoload.php

// TODO: Utiliser le mot-clé 'use' pour importer App\Models\Product

// TODO: Utiliser le mot-clé 'use' pour importer App\Models\Customer

// TODO: Créer un Product avec le nom "Laptop" et le prix 999

// TODO: Créer un Customer avec le nom "Alice"

// TODO: Afficher le résultat de greet() du customer

// TODO: Afficher le résultat de getInfo() du product
?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur PHP en ligne