Autoload en PHP

Les classes doivent être définies avant d’être utilisées, mais vous pouvez utiliser le chargement automatique pour charger les classes lorsqu’elles sont nécessaires. Lorsque nous utilisons l’instruction new ClassName (), si la classe ClassName n’existe pas (car elle n’a pas été incluse), PHP déclenche un autoloader qui peut ensuite charger le fichier ClassName.php, et le reste du script continuera comme d’habitude sans que nous ayons jamais besoin d’écrire manuellement la ligne require ‘ClassName.php’ ;.

Qu’est ce que l’autoloading ( chargement de classe automatique )

Le chargement automatique est le processus de chargement automatique des classes PHP sans les charger explicitement avec les fonctions require (), require_once (), include () ou include_once ().

Qu’est-ce que l’autoloader

Un autoloader est une fonction qui prend un nom de classe comme argument et inclut ensuite le fichier contenant la classe correspondante, par exemple:

function autoloader ( $class ) {
 $path = $DOCUMENT_ROOT . '/classes/';
 require $path . $class .'.php'; 
}

Autoloading Classes Exemples

  1. Créez des répertoires / dossiers à la racine de votre document: classes, vues et modèles.
  2. Créez deux fichiers PHP dans chaque dossier: home.php et all.php.
  3. Créez des classes en écrivant le code suivant dans chaque fichier

classes/home.php

<?php
namespace classes;
class home {
 public function get(){
  return 'classes/home.php';
 }
}

classes/all.php

<?php
namespace classes;
class all {
 public function get(){
  return 'classes/all.php';
 }
}

models/home.php

<?php
namespace models;
class home {
 public function get(){
  return 'models/home.php';
 }
}

models/all.php

<?php
namespace models;
class all {
 public function get(){
  return 'models/all.php';
 }
}

views/home.php

<?php
namespace views;
class home {
 public function get(){
  return 'views/home.php';
 }
}

classes/all.php

<?php
namespace views;
class all {
 public function get(){
  return 'views/all.php';
 }
}

Créez un fichier loader.php à la racine du document et écrivez le code suivant:

<?php

spl_autoload_register();
$home = new classes\home();
echo $home->get() . <br>;

$home = new views\home();
echo $home->get(). <br>;

$home = new models\home();
echo $home->get(). <br>;

$all = new classes\all();
echo $all->get(). <br>;

$all = new views\all();
echo $all->get(). <br>;

$all = new models\all();
echo $all->get();

/*Output
classes/home.php
views/home.php
models/home.php
classes/all.php
views/all.php
models/all.php*/

Vous pouvez voir toutes les classes chargées sans utiliser les mots clés include ou require. Depuis PHP 5.3, vous pouvez utiliser spl_autoload_register () avec des espaces de noms, ce qui signifie que vous pouvez organiser votre projet et charger automatiquement vos classes php sans nécessiter ni inclure.