Le rôle du fichier d'entrée php
Le fichier d'entrée php peut réaliser la fonction de chargement automatique.
Fonction de chargement automatique pour analyser les fichiers d'entrée PHP
Chargement automatique de php :
Avant php5, nous devions utiliser une certaine classe ou class Méthode, elle doit inclure ou require avant de pouvoir être utilisée. Chaque fois que vous utilisez une classe, vous devez écrire une inclusion.
L'auteur PHP veut simplifier les choses. classe. S'il n'y a pas d'inclusion actuellement, le système peut trouver automatiquement cette classe et introduire automatiquement ~
Donc : la fonction __autoload() a vu le jour.
est généralement placé dans la classe d'entrée d'application, telle que discuz, placée dans class_core.php.
Recommandé : "Tutoriel PHP"
Parlons d'abord d'un exemple simple :
Le premier cas : le contenu du fichier A.php est comme suit
<?php class A{ public function __construct(){ echo 'fff'; } } ?>
Le contenu du fichier C.php est le suivant :
<?php function __autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A(); //这边会自动调用__autoload,引入A.php文件 ?>
Deuxième cas : Parfois j'espère personnaliser le chargement automatique et créez un chargeur de nom Cool plus récent, puis C.php est modifié comme suit :
<?php function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); //注册一个自动加载方法,覆盖原有的__autoload $a = new A(); ?>
La troisième situation : j'espère être plus sophistiqué et utiliser une classe pour gérer le chargement automatique
<?php class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); ?>
Actuellement la meilleure forme.
Habituellement, nous mettons spl_autoload_register(*) dans le script d'entrée, c'est-à-dire cité depuis le début. Par exemple, l'approche discuz suivante.
if(function_exist('spl_autoload_register')){ spl_autoload_register(array('core','autoload')); //如果是php5以上,存在注册函数,则注册自己写的core类中的autoload为自动加载函数 }else{ function __autoload($class){ //如果不是,则重写php原生函数__autoload函数,让其调用自己的core中函数。 return core::autoload($class); } }
C'est super de mettre ce paragraphe au début du fichier d'entrée~
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!