⊗ppOpNsAu 105 of 107 menu

Autochargement des classes en POO en PHP

Vous savez déjà que pour utiliser une classe quelconque, nous devons l'inclure via require. Lorsqu'un projet contient beaucoup de classes, cela génère de nombreuses inclusions, qui sont très inconfortables à écrire et difficiles à contrôler.

Pour résoudre ce problème, l'autochargement des classes a été ajouté en PHP. L'autochargement permet à PHP de charger automatiquement le fichier d'une classe lors d'une tentative d'accès à cette classe dans le code. Cependant, les classes ne se chargeront pas toutes seules - elles doivent être placées dans les dossiers du site d'une manière spéciale, en suivant une certaine convention de nommage des fichiers et des dossiers de classes. On peut utiliser la convention intégrée à PHP, ou inventer la sienne et l'utiliser.

Commençons par analyser la convention standard de PHP. Cette convention consiste dans le fait que si nous avons un certain fichier avec une classe, alors le chemin d'accès dans les dossiers du site vers ce fichier doit correspondre à l'espace de noms du fichier, et le nom du fichier doit correspondre au nom de la classe qu'il contient. De plus, les noms des dossiers et du fichier doivent être en minuscules.

Regardons un exemple. Supposons que nous ayons la classe suivante :

<?php namespace Core\Admin; class PageController { } ?>

Selon la convention, cette classe doit être située dans le dossier /core/admin/ dans le fichier pagecontroller.php.

Utilisons maintenant notre classe dans le fichier index.php, sans l'inclure via require, mais en utilisant l'autochargement. Pour cela, au début du fichier dans lequel les classes sont appelées, il faut appeler la fonction spl_autoload_register. Faisons-le :

<?php spl_autoload_register(); // activons l'autochargement $obj = new Core\Admin\PageController; // créons tranquillement un objet ?>

Dans le fichier index.php, activez le chargement automatique des classes. En suivant la convention de nommage des dossiers et fichiers, créez la classe Core\User, la classe Core\Admin\Controller et la classe Project\User\Data. Dans le fichier index.php, créez des objets de ces classes.

azbydeenesfrkakkptruuz