Maison >développement back-end >tutoriel php >À propos du chargement des classes en PHP
L'orientation objet est une idée importante, et les classes sont également des concepts importants en orientation objet, mais le chargement de classe est la clé de l'utilisation des classes.
Il existe deux manières d'accéder aux cours :
Accès via des objets instanciés
Accès aux membres de la classe
La condition préalable à l'accès est qu'il y ait une classe dans la mémoire, la classe doit donc être chargée dans la mémoire au préalable.
1. Chargement manuel
//类文件 Salary.php <?php class Salary{ public function Student(){ echo "Salary下面的Student方法"; } } ?>
应用文件:useSalary.php <?php //$s = new Salary();会报错,因为useSalaty.php中间未定义Salary类 include_once 'Salary.php'; //也可以使用require,通常使用_once,因为类不允许重名 $s = new Salary(); echo $s->Student(); ?>
<?php //加载类文件是一种比较消耗资源的方式,可以事先使用class_exists()函数来判定类是否存在,存在就不用加载,不存在才加载 if(!class_exists('Salary')){ //不存在:加载 include_once 'Salary.php'; } //使用 $s = new Salary(); ?>
2. Chargement automatique
Le mécanisme de chargement automatique utilisé avant PHP7 : Utilisez la fonction __autoload() fournie par le système. Ensuite, lorsque le système a besoin d'utiliser une classe et qu'elle n'existe pas en mémoire, le système appellera automatiquement la fonction __autoload() pour charger. le fichier de classe.
<?php function __autoload($classname){ //参数为类名:即当前需要访问的类的名字 //需要人为定义去哪加载,怎么加载 include_once $classname . '.php'; //假定为当前目录下,类文件名字为:类名.php } //使用类:内存目前并没有 $s = new Salary(); //系统发现内存没有Salary,所以调用__autoload()去加载 ?>
//若在不同路径下 <?php //定义自动加载 function __autoload($classname){ $abc_file = 'abc/' . $classname . '.php'; //如abc/Salary.php if(file_exists($c_file)){ //利用file_exists()判断文件是否存在 include_once $abc_file; } } ?>
Après PHP7, il n'est pas recommandé d'utiliser la fonction __autoload(), mais d'utiliser un mécanisme d'enregistrement pour personnaliser l'utilisateur La fonction est placée à l'intérieur du système et utilise spl_autoload_register (fonction définie).
<?php function myself_autoload($classname){ //与__autoload()类似 $abc_file = 'abc/' . $classname . '.php'; //如abc/Salary.php if(file_exists($c_file)){ include_once $c_file; } } //此时,上述函数永远不会自动运行,除非将函数注册到系统内部 spl_autoload_register('myself_autoload'); ?>rrree
Recommandé : tutoriel php
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!