POO, Auto-chargement de classes
Pour éviter les inclusions de fichiers de classe parfois inutiles, la fonction __upload() permet d’appeler le fichier que si vous utiliser la classe (à la création d’objet par exemple).
Dans l’exemple ci-dessous, le fichier Voiture.php est chargé au moment de l’instanciation de l’objet $mavoiture.
function __autoload($nomClass) {
include $nomClass . '.php';
}
$mavoiture = new Voiture();
$mavoiture->demarrage();
Le nom du fichier doit correspondre au nom de la classe. Dans notre cas, le fichier s’appelle Voiture.php et son contenu est :
class Voiture{
const NOMBREAIRBAG = 3;
public static $constructeur = "Peugeot";
private $marque = "peugeot";
public function demarrage(){
echo "La voiture de marque ".$this->marque." démarre"; // la marque de lui-même
}
public static function info(){
echo "La voiture est fabriquée par ".self::$constructeur; // info sur le fabriquant
}
}
Affichage
La voiture de marque peugeot démarre
Alternative conseillée
La fonction spl_autoload_register() est une solution plus flexible pour le chargement automatique de classe. Cette méthode est donc vivement conseillée car elle risque à l’avenir de remplacer la fonction __autoload considérée comme obsolète.
//ancienne méthode
/*
function __autoload($nomClass) {
include $nomClass . '.php';
}
*/
function autochargement($nomClass) {
include $nomClass . '.php';
}
spl_autoload_register('autochargement');
$mavoiture = new Voiture();
$mavoiture->demarrage();
Cette fonction peut être appelé plusieurs fois (contrairement à la fonction __autoload) pour créer plusieurs fonctions d’auto-chargement.