www.6766.comphp自动加载的两种实现方法_php技巧_脚本之家

php自动载方法有两种. 第一种方案用__autoload,这个函数较简单,也较弱.
但有一问题没有解决, 就是在include前判断文件是否存在的问题. 复制代码 代码如下: set_include_path(‘aa’ .
PATH_SEPARATOR . get_include_path; function __autoload {
//如果加这个检测, 因为此文件不在当前目录下,它就会检测不到文件存在,
//但include是能成功的 if (file_exists { include_once; } else { exit; }
} $a = new Acls(); 第二种方案用spl自动加载,这里具体说一下这个.
spl_autoload_register() 一个简单的例子 复制代码 代码如下: set_include_path(‘aa’ .
PATH_SEPARATOR . get_include_path; //function __autoload //{ // if
(file_exists { // include_once; // } else { // exit; // } //}
spl_autoload_register;
spl_autoload_register在路径中查找具有小写文件名的”.php”程序.默认查找的扩展名还有”.ini”,还可以用spl_autoload_extenstions()注册扩展名.
在找不到的清况下,还可以通过自己定义函数查找 如 function loader1 {
//自己写一些加载的代码 } function loader2 { //当loader1()找不到时,我来找
} spl_autoload_register; spl_autoload_register; 还可以更多……..
MVC框架是如何实现自动加载的 首先设置路径 ‘include’ => array(
‘application/catalog/controllers’, ‘application/catalog/models’,
),$include = array(‘application/controllers’, ‘application/models’,
‘application/library’); set_include_path . PATH_SEPARATOR
.implode(PATH_SEPARATOR, $config[‘include’]));
在获取URL,解析出控制器与方法. 然后设置自动加载 复制代码 代码如下: class Loader { /** *
自动加载类 * @param $class 类名 */ public static function autoload {
$path = ”; $path = str_replace . ‘.php’; include_once; } } /** *
sql自动加载 */ spl_autoload_register(array);
路由,实例化控制器,调用方法,你写的东西就开始执行了 复制代码 代码如下: /** * 路由 */ public
function route() { if (class_exists($this->getController { $rc = new
ReflectionClass($this->getController; if ($rc->hasMethod {
$controller = $rc->newInstance(); $method = $rc->getMethod;
$method->invoke; } else throw new Exception; } else throw new
Exception; } 初步的自动加载就完成了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图