php怎么用自动加载类?
index.php需要调用很多类,autoload.php文件该怎么写?还是不怎么懂,我的目录下有三个文件,分别是a.php,test.php,autoload.php该...
index.php需要调用很多类,autoload.php文件该怎么写?
还是不怎么懂,我的目录下有三个文件,分别是a.php,test.php,autoload.php该怎么写? 展开
还是不怎么懂,我的目录下有三个文件,分别是a.php,test.php,autoload.php该怎么写? 展开
2个回答
展开全部
php自动载方法有两种.
第一种方案用__autoload,这个函数较简单,也较弱.
但有一问题没有解决, 就是在include前判断文件是否存在的问题.
set_include_path('aa' . PATH_SEPARATOR . get_include_path());
function __autoload($className)
{
//如果加这个检测, 因为此文件不在当前目录下,它就会检测不到文件存在,
//但include是能成功的
if (file_exists($className . '.php')) {
include_once($className . '.php');
} else {
exit('no file');
}
}
$a = new Acls();
第二种方案用spl自动加载,这里具体说一下这个.
spl_autoload_register()
一个简单的例子
set_include_path('aa' . PATH_SEPARATOR . get_include_path());
//function __autoload($className)
//{
// if (file_exists($className . '.php')) {
// include_once($className . '.php');
// } else {
// exit('no file');
// }
//}
spl_autoload_register();
$a = new Acls();
展开全部
<?php
function __autoload($class_name) {
require_once $path . '.php';
}
$ob = new classname(方法名); //如果本文件没有此方法,系统会自动调用__autoload();然后在里面require 类文件,注意,文件名,和类名要一样,比如data.php里面有class data{};
还有种方法就是
spl_autoload_register
这个方法能改变方法名,原理和__autoload一样,多了个功能,当然也更复杂。
大多情况下__autoload够了
function __autoload($class_name) {
require_once $path . '.php';
}
$ob = new classname(方法名); //如果本文件没有此方法,系统会自动调用__autoload();然后在里面require 类文件,注意,文件名,和类名要一样,比如data.php里面有class data{};
还有种方法就是
spl_autoload_register
这个方法能改变方法名,原理和__autoload一样,多了个功能,当然也更复杂。
大多情况下__autoload够了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询