?【前言】
? ?本文记录下PHP自动加载的原理和相关应用
?
【主体】
应用场景:
? ? ? ? ? 实例化某个类时,如MySQL,需要先require()。如果类比较多,目录也就比较多,require引入文件时将显得很麻烦。这时需要一个自动化的解决方案----自动加载。
应用案例:
? ? ? ? ?thinkPHP里经常遇到类名与文件名一致,这便用到了自动加载功能。
代码解析:
class="php" name="code"><?php
function myload($class){//这里$class为实例化的类名
echo $class."?";
}
//注册一个函数为自动触发函数--调用/实例化一个不存在的类时便会自动触发
spl_autoload_register('myload');
new mySql();
?>
解析:new mySql()会在本页面查找mysql类,不存在时便会触发sql_autoload_register()里注册的自动触发函数
被注册函数的形参,上例为$class,会接受实例化的类名。
<?php
function myload($class){
include './'.$class.'.class.php';//这里便会引入(自动加载)mySql.class.php文件
}
//注册一个函数为自动触发函数--调用/实例化一个不存在的类时便会自动触发
spl_autoload_register('myload');
new mySql();
?>
mySql.class.php:
<?php
class mySql{
public function __construct(){
echo "789";
}
}
?>
?
?
【总结】
? ? ? ?简单理解所谓的自动加载并不是真的自动加载,而是利用spl_autoload_register()注册自动触发函数,利用函数里面设定的include内容来加载想要加载的文件。并且new里面的一个类名。
?
?
?
?
?
?