thinkphp 框架自动加载原理_第三讲 类自动加载原理

## PHP类自动加载

1. 引入PHP文件

> php中所有的引入文件都需要用include、include_once 或 require、requuire_once 函数的其中一个,如:

~~~

//引入通用函数文件

include "common.php";

//下面就可以调用common中的函数了

?>

~~~

2. __autoload自动加载文件

> 当php文件中注册了该函数,在调用非本文件中且还没引入的类时,则自动会调用该函数进行引入前的判断操作,如:

~~~

//注册自动加载函数

function __autoload($class)

{

//在这里面把类的文件做了相对的映射

include "core/".$class.'class.php';

}

//实例化非文件且未引入的类,就是调用上面的__autoload函数

$class = new Test();

?>

~~~

3. spl_autoload_register自动加载文件

> 为什么有了__autoload还要有spl_autoload_register呢?这个问题问得很好,因为最简单的来说,一个系统中仅能有一个__autoload函数,这样的话,我们在加载类文件时,所有的判断条件就都要写在一个__autoload,这样的话,我们系统中的__autoload函数将会比较复杂。而spl_autoload_register可以多次调用,从而注册多个自动类加载函数如:

~~~

spl_autoload_register(function($class){

if($class == 'Test')

{

include 'Test/'.Test.'class.php';

}

});

spl_autoload_register(function($class){

if($class == 'Helper')

{

include 'Helper/'.Test.'class.php';

}

});

//实例化Helper类

$helper = new Helper();

?>

~~~

> 差点忘记说了,当文件时同时存在__autoload以及spl_autoload_register时,仅有spl_autoload_register启作用,__autoload不启作用。

## 好了 我们上面说了这么多,该轮到讲ThinkPHP5它的自动加载源码了。

>其实讲ThinkPHP5的自动加载原理也就用了上面的spl_autoload_register函数注册了类自加在载函数而已。

### 视频正在录制中,请同学们先预习,把代码放到自己的编辑器先运行:

~~~

function __autoload($class)

{

echo $class.'
';

}

spl_autoload_register(function($class){

echo $class.':spl_autoload_register1
';

});

spl_autoload_register(function($class){

echo $class.'spl_autoload_register2
';

});

$class = new autoLoadClass();

exit;

~~~

百度下载地址:http://pan.baidu.com/s/1eSeeYci

TP5粉丝群: 543608226

TP5底层答疑群: 451935051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值