加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP spl_autoload_register实现自动加载研究

发布时间:2020-05-25 20:12:19 所属栏目:PHP 来源:互联网
导读:spl_autoload_register()函数应该是主流框架使用最多的也是非常核心的函数之一,可实现自动注册函数和类,实现类似__autoload() 函数功能,简化了类的调用与加载,提高了工作的效率

这里通过一个实验谈谈这个函数的部分特征。 函数原型
bool spl_autoload_register ([ callback $autoload_function [,bool $throw = true [,bool $prepend = false ]]] ) 版本兼容
PHP 5 >= 5.1.2 实验过程
第一步,使用spl_autoload_register()函数注册load()方法
<div class="codetitle"><a style="CURSOR: pointer" data="19318" class="copybut" id="copybut19318" onclick="doCopy('code19318')"> 代码如下:<div class="codebody" id="code19318">
<?php
function load(){
require_once 'lib.php';
}
spl_autoload_register('load');
?>
其中lib.php文件代码如下
<div class="codetitle"><a style="CURSOR: pointer" data="11032" class="copybut" id="copybut11032" onclick="doCopy('code11032')"> 代码如下:<div class="codebody" id="code11032">
<?php
class className{
function method(){
echo 'a method in class';
}
} function onlyMethod(){
echo 'method only';
}
?>

说明:lib.php文件为一个className类和一个onlyMethod函数 第二步,调用自动加载类
<div class="codetitle"><a style="CURSOR: pointer" data="89006" class="copybut" id="copybut89006" onclick="doCopy('code89006')"> 代码如下:<div class="codebody" id="code89006">
$class = new className();
$class->method();
onlyMethod();

输出:
a method in class
method only 说明:实例化className类,并调用类method()函数,同时调用onlyMethod()方法,输出正常,没有出现错误 第三步,直接调用函数 onlyMethod(); 说明:没有实例化类,直接调用lib.php文件中的onlyMethod()函数
输出:
Fatal error: Call to undefined function onlyMethod() in '...(省略路径)' 第四步,实例化className类,再直接调用 $class = new className();
onlyMethod(); 输出:method only 从上面的四步实验发现,如果加载的文件包含函数,使用则一定需要实例化里面的类,否则就产生异常情况 Call to undefined function错误,具体在使用中要注意一下。

参与资料:spl_autoload_register

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读