Maison  >  Article  >  développement back-end  >  Principe et utilisation du mécanisme de chargement automatique orienté objet PHP

Principe et utilisation du mécanisme de chargement automatique orienté objet PHP

墨辰丷
墨辰丷original
2018-06-01 09:29:251463parcourir

Cet article présente principalement le principe et l'utilisation du mécanisme de chargement automatique orienté objet de PHP. Il analyse les principes, les fonctions associées et les précautions du mécanisme de chargement automatique orienté objet de PHP sous forme d'exemples.

Lorsque vous apprendrez le PHP orienté objet, vous connaîtrez beaucoup de « sucre syntaxique », c'est-à-dire des méthodes magiques. Il existe une méthode magique pour ajouter un chargement automatique, appelée : __autoload(); Une classe A est instanciée, mais il n'y a pas de code lié à la classe A dans le bloc de code Normalement, une erreur devrait être signalée car la classe A correspondante ne l'est pas. trouvé Cependant, si vous utilisez la fonction de chargement automatique autoload(), le résultat sera ok. Cela peut-il être différent

De l'organigramme ci-dessus :

Quand. En instanciant une nouvelle classe sur la page, il trouvera d'abord le code de classe correspondant dans le répertoire courant. Sinon, allez dans la pile de chargement automatique pour trouver la fonction de chargement automatique correspondante. S'il y en a une, la classe sera automatiquement chargée. non, une erreur sera générée.
<?php
function __autoload($classname) {
  $filename = "./". $classname .".php";
  include_once($filename);
}
new a();

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

Officiel : spl_autoload_register() fournit un moyen plus flexible d'implémenter le chargement automatique de cours. Par conséquent, l’utilisation de la fonction __autoload() n’est plus recommandée et pourrait être obsolète dans une version future.

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 l'indentation est utilisée pour indiquer

)
spl_autoload_register(); // 注册autoload函数

Méthode de chargement automatique PHPWord

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;
}
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.
public static function Register() {
  return spl_autoload_register(array(&#39;PHPWord_Autoloader&#39;, &#39;Load&#39;));
}

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Implémentation PHP de la méthode XML native de manipulation d'objets DOM

php

implémentation Fonction de remboursement du paiement WeChat


php

Paiement sur site Web informatique de la série Alipay

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!

Déclaration:
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