Explication détaillée des exemples d'opérations de chargement automatique des classes PHP

高洛峰
Libérer: 2023-03-03 20:00:02
original
933 Les gens l'ont consulté

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';
}
Copier après la connexion

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';
  }
}
Copier après la connexion

//若注册的是方法而不是函数,则需要使用数组
spl_autoload_register(
  //非静态方法
  array($this,'model'),
  //静态方法
  array(__CLASS__,'controller')
);
Copier après la connexion

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';
  }
}
Copier après la connexion


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 !


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