L'autoloading
Notions théoriques
En PHP, l'autoloading est une fonctionnalité qui permet de charger automatiquement les classes nécessaires sans avoir à les inclure manuellement à chaque fois.
C'est particulièrement utile lorsque vous travaillez avec de nombreux fichiers de classes.
Pour mettre en place l'autoloading, PHP fournit une fonction appelée spl_autoload_register()
.
La fonction
spl_autoload_register()
enregistre une autre fonction (que vous définissez) que PHP appellera automatiquement si vous essayez d'utiliser une classe ou une interface qui n'est pas encore définie.
Par exemple, si vous avez un répertoire contenant toutes vos classes, vous pouvez enregistrer une fonction d'autoloading qui va inclure automatiquement le fichier contenant la classe chaque fois que vous essayez de l'utiliser.
Exemple pratique
Supposons que vous ayez une classe Fichier
dans un fichier Fichier.php
.
Au lieu d'inclure manuellement ce fichier chaque fois que vous voulez utiliser la classe Fichier
,
vous pouvez enregistrer une fonction d'autoloading comme suit :
function autoload($class_name) {
include $class_name . '.php';
}
spl_autoload_register('autoload');
$fichier = new Fichier();
Dans cet exemple, lorsque vous essayez de créer un nouvel objet Fichier
,
PHP appelle la fonction d'autoloading qui inclut automatiquement le fichier Fichier.php
.
On peut aussi utiliser une fonction anonyme :
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});
$fichier = new Fichier();
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans ce TP, nous allons créer un système de gestion des fichiers avec autoloading.
Vous allez créer une classe
Fichier
et l'utiliser sans avoir à inclure manuellement le fichier de classe.
-
Dans votre répertoire "Documents" créez le répertoire
tp_autoloading
. -
Dans le répertoire
tp_autoloading
, créez un répertoireclasses
pour vos classes PHP. -
Dans le répertoire
classes
, créez un fichierFichier.php
pour le code de la classeFichier
qui aura les propriétés publiquesnom
etdroits
. -
Dans le répertoire
tp_autoloading
, créez le fichiermain.php
:<?php
// Utiliser l'autoloading'
print("Utiliser l'autoloading \n\n"); -
Testez le fonctionnement de ce fichier :
php main.php
-
Dans le fichier
main.php
, utilisezspl_autoload_register()
pour automatiser le chargement des classes. -
Dans le fichier
Fichier.php
(présent dans le répertoireclasses
) , créez une classeFichier
avec les 2 propriétés publiques$nom
et$droits
. -
Dans le fichier
main.php
, créez un objet$monFichier
de typeFichier
(c'est à dire une instance de la classeFichier
). -
Définissez les propriétés de l'objet
$monFichier
:- son nom = "document.txt"
- et ses droits = "rwxr--r--".
$monFichier->nom = "document.txt";
$monFichier->droits = "rwxr--r--"; -
Dans le fichier
main.php
, affichez les droits du fichier, sous la forme"Les droits du fichiers ... sont ..."
-
Lancez l'exécution du fichier
main.php
:php main.php
Si tout va bien, l'exécution du fichier main.php
va afficher :
Utiliser l'autoloading
Les droits du fichiers 'document.txt' sont 'rwxr--r--'.
Une solution
Vous devez être connecté pour voir le contenu.