怎样使用PHP中的spl_autoload_register() 和 __autoload() 函数?

在日常开发使用时,我们面向对象程序设计的基本思想是,通常情况下习惯为每个类都创建一个单独的PHP源文件,这样的话为后来的维护提供便利,同时也很容易对类进行复用。
在PHP中可以通过spl_autoload_register() 和 __autoload() 函数来实现类的自动加载功能,这样可以节省我们的编程时间和精力。那接下来我们就分别来介绍一下这两个函数吧。
__autoload()函数
__autoload()函数准确来说它是魔术方法,我们在《五分钟带你了解PHP中的魔术方法(实例详解)》中详细的介绍了一些常用的魔术方法,其中讲到,它是自动调用的,也就是需要早特定条件下才会调用函数。
当我们 new 一个类时,如果当前源文件中找不到这个类,PHP 则会自动调用 __autoload() 函数,并将类名传递给 __autoload() 函数。这就是__autoload()函数调用的特定条件。它的语法格式如下:
function __autoload($class){
// 方法体
}其中我们需要注意的是:
$class为要加载的类名。__autoload()函数在当前源文件中只能定义一次。想要使用
__autoload()函数自动加载类文件,类文件的名称需要与类名相同,另外一个类文件中只能定义一个类。
接下来我们通过示例来看一下__autoload() 函数的使用,示例如下:
<?php
function __autoload($class){
$file = './'.$class.'.php';
include_once($file);
}
$obj = new Demo();
?>运行上面的代码,会自动加载同目录下的 Demo.php 文件,Demo.php 中的代码如下所示:
<?php
class Demo{
}
?>其中我们需要注意的是:__autoload() 函数自 PHP7.2.0 起已被弃用,可以使用 spl_autoload_register() 函数代替。
spl_autoload_register() 函数
spl_autoload_register()函数可以指定一个函数来替代__autoload()函数的功能,
spl_autoload_register([$autoload_function [, $throw = true [, $prepend = false ]]])
其中需要注意的是:
$autoload_function:要替代 __autoload() 函数的函数名称,也可以是一个匿名函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数 spl_autoload();$throw:用来设置 $autoload_function 无法成功注册时,spl_autoload_register() 函数是否抛出异常;$prepend:如果是 true,则 spl_autoload_register() 函数会添加 $autoload_function 函数到队列之首,否则添加到队列尾部。
接下来我们通过示例来看一下,示例如下:
<?php
spl_autoload_register('loadClass');
function loadClass($class){
$file = './'.$class.'.php';
include_once($file);
}
$obj = new Demo();
?>上述示例中使用 spl_autoload_register() 函数指定另一个函数来替代 __autoload() 函数。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
-
核芯显卡是什么意思?核芯显卡和独立显卡有什么区别? 时间:2025-12-19 -
什么是算术逻辑单元ALU 算术逻辑单元的功能和结构 时间:2025-12-19 -
什么是视觉识别色差检测 视觉识别色差检测的原理、技术特点、应用及常用工具 时间:2025-12-19 -
什么是流量控制 流量控制和拥塞控制的区别 时间:2025-12-19 -
GPU虚拟化是什么意思 GPU虚拟化有哪三种方法 时间:2025-12-19 -
独显是什么意思 独显和集显的区别 时间:2025-12-19
今日更新
-
iCloud官网手机版登录入口-iCloud官网快捷登录入口
阅读:18
-
洛克王国世界官网入口-洛克王国世界官网登录地址
阅读:18
-
比特币库存崩盘预警:170亿美元蒸发危机来袭
阅读:18
-
爬爬虾我们走是什么梗?揭秘这个超火网络热词的搞笑来源和用法!
阅读:18
-
初音未来梦幻舞台国服官网入口在哪-国服官网地址最新分享
阅读:18
-
360安全浏览器网页版官方入口-360浏览器网页版官网直达
阅读:18
-
想知道爬山的梗是什么梗吗?揭秘全网爆火背后原因,看完笑到腿软!
阅读:18
-
佛罗里达州新法案重启比特币储备计划 推动加密货币合法化
阅读:18
-
知网官网首页登录入口官方网址-知网官网首页登录入口一键直达指南
阅读:18
-
抖币充值官网入口-抖币充值官网入口1:10
阅读:18










