Maison >développement back-end >tutoriel php >À propos du chargement des classes en PHP

À propos du chargement des classes en PHP

autoload
autoloadoriginal
2021-03-01 15:50:333188parcourir

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 &#39;Salary.php&#39;;				//也可以使用require,通常使用_once,因为类不允许重名
$s = new Salary();
echo $s->Student();
?>
<?php
//加载类文件是一种比较消耗资源的方式,可以事先使用class_exists()函数来判定类是否存在,存在就不用加载,不存在才加载
if(!class_exists(&#39;Salary&#39;)){
	//不存在:加载
    include_once &#39;Salary.php&#39;;
}
//使用
$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 . &#39;.php&#39;;	//假定为当前目录下,类文件名字为:类名.php
}

//使用类:内存目前并没有
$s = new Salary();	//系统发现内存没有Salary,所以调用__autoload()去加载
?>
//若在不同路径下
<?php
//定义自动加载
function __autoload($classname){
    $abc_file = &#39;abc/&#39; . $classname . &#39;.php&#39;;		//如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 = &#39;abc/&#39; . $classname . &#39;.php&#39;;		//如abc/Salary.php
    if(file_exists($c_file)){
        include_once $c_file;
    }
}
//此时,上述函数永远不会自动运行,除非将函数注册到系统内部
spl_autoload_register(&#39;myself_autoload&#39;);
?>
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!

Déclaration:
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