PHP spl_autoload_register实现自动加载研究

2015-01-24信息快讯网

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()方法
 
<?php 
function load(){ 
require_once 'lib.php'; 
} 
spl_autoload_register('load'); 
?> 


其中lib.php文件代码如下
 
<?php 
class className{ 
function method(){ 
echo 'a method in class'; 
} 
} 

function onlyMethod(){ 
echo 'method only'; 
} 
?> 

说明:lib.php文件为一个className类和一个onlyMethod函数

第二步,调用自动加载类
 
$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

PHP autoload与spl_autoload自动加载机制的深入理解
PHP register_shutdown_function函数的深入解析
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
spl_autoload_register与autoload的区别详解
php 深入理解strtotime函数的使用详解
基于wordpress主题制作的具体实现步骤
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
phpcms模块开发之swfupload的使用介绍
PHP Directory 函数的详解
php去除换行符的方法小结(PHP_EOL变量的使用)
php中使用__autoload()自动加载未定义类的实现代码
Fine Uploader文件上传组件应用介绍
Zend的AutoLoad机制介绍
PHPExcel读取Excel文件的实现代码
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
PHP循环语句笔记(foreach,list)
PHP中strtotime函数使用方法详解
PHP中去除换行解决办法小结(PHP_EOL)
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
php中$_REQUEST、$_POST、$_GET的区别和联系小结
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
php空间不支持socket但支持curl时recaptcha的用法
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
提示Trying to clone an uncloneable object of class Imagic的解决
Admin generator, filters and I18n
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
yii框架源码分析之创建controller代码
PHP 调试工具Debug Tools
fleaphp rolesNameField bug解决方法
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
zend api扩展的php对象的autoload工具
PHP中uploaded_files函数使用方法详解
PHP中simplexml_load_string函数使用说明
PHP的autoload自动加载机制使用说明
©2014-2024 dbsqp.com