Autoload php

26 janvier 2014 nakama

Développement

(Cet article a été écrit il y a très longtemps, dans une galaxie très très lointaine)

Petite trouvaille sur la doc PHP.

2 fonctions assez sympathique : __autoload et spl_autoload_register.

Elles permettent de charger automatiquement des fichiers dès que l’on fait appel à une class.

Une différence entre les 2 fonctions ?

__autoload : doit être chargé une seule fois sinon : erreur
– Par contre, la fonction spl_autoload_register peut être chargées plusieurs fois et ainsi charger automatiquement plusieurs fichiers de dossier différent.

Donc si votre code doit ce coupler avec d’autre code de plusieurs autres personnes, spl_autoload_register limitera les problèmes 🙂 De plus __autoload est de moins en moins utilisé (elle sera « probablement » supprimée dans les prochaines) : à utiliser uniquement si vous avez une version égale PHP 5.

Place au code

function autoloadClass($class){
    $pattern = "/^_[a-zA-Z]*\.php$/";
    $name = "./cl/".$class.".php";
    if( preg_match($pattern, $class.".php") && file_exists($name) ){
        include $name;
    }
}

spl_autoload_register('autoloadClass');

Ligne 4, je vérifie si :

– le pattern est bon : le fichier doit commencer par un underscore, suivi de lettres (min et/ou maj) et se terminer par .php
– le fichier existe dans le dossier

Et comment charger les class ?

$obj  = new _test();
$obj2 = new _lol();

Dès que l’on crée un nouvel objet, la fonction est appelée et charge le fichier. Si l’objet est créé plusieurs fois, le fichier sera chargé qu’une seule fois 🙂 heureusement.

Si tout est OK, on peut inclure les fichiers qui se trouvent dans le dossier cl (ici : le fichier _test.php et _lol.php)

Mots-clés associés à cet article :

Retrouvez d'autres articles par catégories