Maison > Article > développement back-end > Explication détaillée de la définition du mécanisme de chargement automatique PHP et exemples d'utilisation
Cet article présente principalement le principe et l'utilisation du mécanisme de chargement automatique orienté objet PHP, et analyse les principes, les fonctions associées et les précautions du chargement automatique orienté objet PHP mécanisme sous forme d'exemples., Les amis dans le besoin peuvent se référer à
Les exemples de cet article décrivent les principes et l'utilisation du mécanisme de chargement automatique orienté objet de PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Lors de l'apprentissage de l'approche orientée objet de PHP, vous connaîtrez beaucoup de "sucre de syntaxe", qui sont des méthodes magiques. Il existe une méthode magique pour ajouter un chargement automatique, appelée : autoload();
Regardez d'abord un morceau de code
<?php function autoload($classname) { $filename = "./". $classname .".php"; include_once($filename); } new a();
Une classe A est instanciée ici, mais il n'y a pas de classe A dans le bloc de code Le code concerné, selon le bon sens, devrait signaler une erreur car la classe A correspondante n'est pas trouvée, mais si vous utilisez la fonction de chargement automatique autoload(), le résultat peut être différent
D'après l'organigramme ci-dessus : Lors de l'instanciation d'une nouvelle classe sur la page, elle trouvera d'abord le code de classe correspondant dans le répertoire actuel. Sinon, accédez à la pile de chargement automatique pour le trouver. la fonction de chargement automatique correspondante s'il y en a une, chargez automatiquement cette classe et renvoie une erreur sinon.
Il s'agit d'un mécanisme permettant à PHP de se charger automatiquement. Ensuite, l'accent est mis sur le dos. Et si j'ai plusieurs fonctions chargées automatiquement !
PHP fournit une fonction SPL
spl_autoload_register(); // 注册autoload函数
Officiel : spl_autoload_register() fournit un moyen plus flexible d'implémenter le chargement automatique des classes. Par conséquent, l’utilisation de la fonction autoload() n’est plus recommandée et pourrait être obsolète dans une version ultérieure.
Cependant, cette fonction est utilisée à la fois dans PHPexecl et PHPWord pour le chargement automatique, mais il y a une différence entre les deux ! !
Méthode de chargement automatique PHPexecl (L'auteur ici est probablement un ingénieur Python, sinon il n'y a pas d'accolades, et utilise l'indentation pour exprimer )
public static function Register() { $functions = spl_autoload_functions(); foreach ( $functions as $function) spl_autoload_unregister($function); $functions = array_merge(array(array('PHPExcel_Autoloader','Load')),$functions); foreach ( $functions as $function) $x = spl_autoload_register($function); return $x; }
PHPWord automatique méthode de chargement
public static function Register() { return spl_autoload_register(array('PHPWord_Autoloader', 'Load')); }
Ces deux méthodes peuvent compléter la redéfinition du chargement automatique, mais quelle est la différence ? Si le code est exécuté indépendamment, les deux cas peuvent être exécutés, mais s'il est intégré dans un framework, tel que le framework YII. Le chargement automatique de PHPWord n'est alors pas valide.
Parce que le framework YII est automatiquement livré avec une fonction de chargement automatique, et qu'il est déjà enregistré lorsque le code est en cours d'exécution, et spl_autoload_register() chargera la nouvelle fonction de chargement automatique à la fin de la file d'attente de chargement automatique. Lorsque tout PHPWord est en cours d'exécution,
appelle le mécanisme de chargement automatique défini par le framework YII, et ce n'est pas la méthode de chargement de PHPWord.
Donc si vous regardez la fonction de chargement de PHPexecl, vous comprendrez.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!