PHP函数spl_autoload_register()用法和__autoload()介绍
来源:互联网 发布:电子病历软件 免费 编辑:程序博客网 时间:2024/05/28 19:25
__autoload()的用法就不再说了,以前已经在我的WEB开发笔记中说过。PHP __autoload函数(自动载入类文件)的使用方法, 原文地址:http://www.jb51.net/article/29625.htm 。
说一说,spl_autoload_register()的用法吧,很简单,可以这样理解,就是声明一个自定义__autoload(),你可以是A函数,也可以是B函数,想怎么样就怎么样,函数体的写法,当然要和__autoload()一样就OK 了。
当PHP找不到类文件会调用这个方法,当注册了自己的函数或方法时,PHP不会调用__autoload()函数,而会调用自定义的函数
spl_autoload_register(‘func_name');
spl_autoload_register(array(‘class_name','method_name'));
详细说明如下:
spl_autoload_register
(PHP 5>= 5.1.2)
spl_autoload_register — 注册__autoload()函数
说明
bool spl_autoload_register ([ callback $autoload_function ] )
将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为
spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或
spl_autoload_call()。
参数
autoload_function
欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数
spl_autoload()。
返回值
如果成功则返回 TRUE,失败则返回 FALSE。
注:SPL是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数spl_autoload, spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。
代码如下:
test.class.php
<?php
class
abc{
function
__construct()
{
echo
'www.chhua.com;
}
}
?>
load.php
<?php
class
LOAD
{
static
function
loadClass(
$class_name
)
{
$filename
=
$class_name
.
".class.php"
;
if
(
is_file
(
$filename
))
return
include_once
$filename
;
}
}
/**
* 设置对象的自动载入
* spl_autoload_register — Register given function as __autoload() implementation
*/
spl_autoload_register(
array
(
'LOAD'
,
'loadClass'
));
$a
=
new
Test();
//实现自动加载,很多框架就用这种方法自动加载类
?>
spl_autoload_register装载函数的正确写法
AutoLoading\loading
<?php
namespace
AutoLoading;
class
Loadind {
public
static
function
autoload(
$className
){
//根据PSR-O的第4点 把 \ 转换层(目录风格符) DIRECTORY_SEPARATOR ,
//便于兼容Linux文件找。Windows 下(/ 和 \)是通用的
//由于namspace 很规格,所以直接很快就能找到
$fileName
=
str_replace
(
'\\'
, DIRECTORY_SEPARATOR, DIR .
'\\'
.
$className
) .
'.php'
;
if
(
is_file
(
$fileName
)) {
require
$fileName
;
}
else
{
echo
$fileName
.
' is not exist'
;
die
;
} }
}
index.php
//定义当前的目录绝对路径
define(
'DIR'
, dirname(
__FILE__
));
//加载这个文件
require
DIR .
'/loading.php'
;
//采用`命名空间`的方式注册。php 5.3 加入的
//也必须是得是static静态方法调用,然后就像加载namespace的方式调用,注意:不能使用use
spl_autoload_register(
"\\AutoLoading\\loading::autoload"
);
// 调用三个namespace类
//定位到Lib目录下的Name.php
Lib\Name::test();
//定位到App目录下Android目录下的Name.php
App\Android\Name::test();
//定位到App目录下Ios目录下的Name.php
App\Ios\Name::test();
- PHP函数spl_autoload_register()用法和__autoload()介绍
- PHP函数spl_autoload_register()用法和__autoload()介绍
- PHP函数spl_autoload_register()用法和__autoload()介绍
- PHP函数spl_autoload_register()用法和__autoload()介绍
- PHP函数__autoload()和spl_autoload_register()
- php中__autoload和spl_autoload_register的用法
- PHP框架优化-spl_autoload_register()用法和__autoload()
- 117 php __autoload 和 spl_autoload_register
- PHP中spl_autoload_register()和__autoload()区别分析
- PHP中spl_autoload_register()和__autoload()区别
- PHP中的__autoload()和spl_autoload_register()笔记
- __autoload()和spl_autoload_register()
- __autoload和spl_autoload_register()
- PHP自动加载类—__autoload()和spl_autoload_register()
- PHP自动加载类—__autoload()和spl_autoload_register() (补充)
- PHP自动加载类—__autoload()和spl_autoload_register() (补充)
- php魔法函数__autoload用法
- __autoload()和spl_autoload_register()的理解
- 99%的人都理解错了HTTP中GET与POST的区别
- mysql 主从复制原理及实战操作
- gamemaker学习笔记:按钮检测
- 自定义设置圆角大小的圆角按钮
- Linux 下快速配置网卡操作
- PHP函数spl_autoload_register()用法和__autoload()介绍
- FastDFS安装、配置、部署(一)
- Java实现HTML代码生成PDF文档
- Linux 系统启动过程
- Moving to “Micro-service” and “Serverless”
- bzoj 1610: [Usaco2008 Feb]Line连线游戏
- 知道这20个正则表达式,能让你少写1,000行代码 沐子哈 发表于10小时前 转 知道这20个正则表达式,能让你少写1,000行代码
- Python之倒序访问list
- 30分钟学会如何使用Shiro