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

墨辰丷
Libérer: 2023-03-28 20:04:02
original
1450 Les gens l'ont consulté

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

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

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

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!

É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!