关于spl_autoload_register()和__autoload(),相信大多数都会选择前者了? 看两者的用法:
复制代码 代码如下:
//__autoload用法
function __autoload($classname)
{
$filename = “./class/”.$classname.”.class.php”;
if (is_file($filename))
南宁人民公园 {
incl英语副词是什么意思ude $filename;
}
}
//s 詹天佑 读后感pl_autoload_register用法
spl_autoload_register(‘load_class’);
function load_class($classname)
{
$filename = “./class/”.$classname.”.class.php”;
if (is_file($filename))
{
include $filename;
}
}
使用spl_autoload_register()的好处是不可言喻的:
(1)自动加载对象更加方便,很多框架都是这样做的:
复制代码 代码如下:
class classautoloader {
public function __construct() {
spl_autoload_register(array($this, ‘loader’));
}
private function loader($classname) {
echo ‘trying to load ‘, $classname, ‘ via ‘, __method__, “()\n”;
include $classname . ‘.php’;
}
}
$autoloader = new classautoloader();
$obj = new class1();
$obj = new class2();
(2)你要知道__autoload()函数只能存在一次啊,spl_autoload_register()当然能注册多个函数
复制代码 代码如下:
function a () {
include ‘a.php’;
}
function b () {
include ‘b.php’;
}
spl_autoload_register(‘a’);
spl_autoload_register(‘b’);
(3)spl函数很丰富,提供了更多功能,如spl_脂肪的功能autoload_unregister军校毕业生待遇()注销已经注册的函数、spl_autoload_functions()返回所有已经注册的函数等。
详见php参考手册:关于spl函数列表.
注意:
如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为
spl_autoload_register()函数会将zend engine中的__autoload函数取代为spl_autoload() 或 spl_autoload_call()
复制代码 代码如下:
/**
*__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
* 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
*/
spl_autoload_register( ‘__autoload’ );
本文发布于:2023-04-06 22:42:54,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/0f489497c118467686ddcd6bc283c8bc.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP中spl.doc
本文 PDF 下载地址:PHP中spl.pdf
留言与评论(共有 0 条评论) |