Explication détaillée de la définition du mécanisme de chargement automatique PHP et exemples d'utilisation

伊谢尔伦
Libérer: 2023-03-12 07:02:02
original
1230 Les gens l'ont consulté

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();
Copier après la connexion

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函数
Copier après la connexion

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(&#39;PHPExcel_Autoloader&#39;,&#39;Load&#39;)),$functions);
    foreach ( $functions as $function)
      $x = spl_autoload_register($function);
    return $x;
}
Copier après la connexion

PHPWord automatique méthode de chargement

public static function Register() {
  return spl_autoload_register(array(&#39;PHPWord_Autoloader&#39;, &#39;Load&#39;));
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!