Maison > Article > développement back-end > Explication détaillée des exemples d'opérations de chargement automatique des classes PHP
L'exemple de cet article décrit l'opération de chargement automatique de la classe PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Chargement automatique des classes
Dans les pages externes, il n'est pas nécessaire d'introduire des fichiers de classe, mais le programme chargera automatiquement un classe lorsque cela est nécessaire. Allez dans "Chargement dynamique" de la classe.
① Lors de la création d'un nouvel objet
② Utilisez directement un nom de classe (pour faire fonctionner les propriétés et méthodes statiques)
Utilisez la fonction magique __autoload
Lorsque deux situations se produisent, cette fonction sera appelée. Cette fonction nous oblige à la définir à l'avance et à écrire une instruction générale pour charger les fichiers de classe
function __autoload($name){ require './lib/'.$name.'.class.php'; }
Utiliser spl_autoload_register()
Utilisez-le pour enregistrer (déclarer) plusieurs fonctions qui peuvent remplacer __autoload() Naturellement, vous devez définir ces fonctions, et la fonction de la fonction est la même que __autoload(), mais vous pouvez vous en occuper. en ce moment Plus de situations
//注册用于自动加载的函数 spl_autoload_register("model"); spl_autoload_register("controll"); //分别定义两个函数 function model($name){ $file = './model/'.$name.'.class.php'; if(file_exists($file)){ require './model/'.$name.'.class.php'; } } //如果需要一个类,但当前页面还没加载该类 //就会依次调用model()和controll(),直到找到该类文件加载,否则就报错 function controll($name){ $file = './controll/'.$name.'.class.php'; if(file_exists($file)){ require './controll/'.$name.'.class.php'; } }
//若注册的是方法而不是函数,则需要使用数组 spl_autoload_register( //非静态方法 array($this,'model'), //静态方法 array(__CLASS__,'controller') );
Application de scénario de projet
//自动加载 //控制器类 模型类 核心类 //对于所有的类分为可以确定的类以及可以扩展的类 spl_autoload_register('autoLoad'); //先处理确定的框架核心类 function autoLoad($name){ //类名与类文件映射数组 $framework_class_list = array( 'mySqldb' => './framework/mySqldb.class.php' ); if(isset($framework_class_list[$name])){ require $framework_class_list[$name]; }elseif(substr($name,-10)=='Controller'){ require './application/'.PLATFORM.'/controller/'.$name.'.class.php'; }elseif(substr($name,-6)=='Modele'){ require './application/'.PLATFORM.'/modele/'.$name.'.class.php'; } }
J'espère que ce que décrit cet article sera utile à tout le monde dans la programmation PHP.
Pour des exemples plus détaillés d'opérations de chargement automatique de classes PHP, veuillez faire attention au site Web PHP chinois pour les articles connexes !