php自动加载
2010-06-19 09:55
302 查看
php自动载方法有两种.
第一种方案用__autoload,这个函数较简单,也较弱.
但有一问题没有解决, 就是在include前判断文件是否存在的问题.
spl_autoload_register()会自动先调用spl_autoload()在路径中查找具有小写文件名的".php"程序.默认查找的扩展名还有".ini",还可以用spl_autoload_extenstions()注册扩展名.
在找不到的清况下,还可以通过自己定义函数查找
如
function loader1($class)
{
//自己写一些加载的代码
}
function loader2($class)
{
//当loader1()找不到时,我来找
}
spl_autoload_register('loader1');
spl_autoload_register('loader2');
还可以更多........
MVC框架是如何实现自动加载的
首先设置路径
'include' => array(
'application/catalog/controllers',
'application/catalog/models',
),
$include = array('application/controllers', 'application/models', 'application/library');
set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $config['include']));
在获取URL,解析出控制器与方法.
然后设置自动加载
第一种方案用__autoload,这个函数较简单,也较弱.
但有一问题没有解决, 就是在include前判断文件是否存在的问题.
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();
spl_autoload_register()会自动先调用spl_autoload()在路径中查找具有小写文件名的".php"程序.默认查找的扩展名还有".ini",还可以用spl_autoload_extenstions()注册扩展名.
在找不到的清况下,还可以通过自己定义函数查找
如
function loader1($class)
{
//自己写一些加载的代码
}
function loader2($class)
{
//当loader1()找不到时,我来找
}
spl_autoload_register('loader1');
spl_autoload_register('loader2');
还可以更多........
MVC框架是如何实现自动加载的
首先设置路径
'include' => array(
'application/catalog/controllers',
'application/catalog/models',
),
$include = array('application/controllers', 'application/models', 'application/library');
set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $config['include']));
在获取URL,解析出控制器与方法.
然后设置自动加载
/** * 路由 */ public function route() { if (class_exists($this->getController())) { $rc = new ReflectionClass($this->getController()); if ($rc->hasMethod($this->getAction())) { $controller = $rc->newInstance(); $method = $rc->getMethod($this->getAction()); $method->invoke($controller); } else throw new Exception('no action'); } else throw new Exception('no controller'); }
初步的自动加载就完成了
相关文章推荐
- PHP命名空间和自动加载
- php-自动加载对象
- PHP命名空间和自动加载类
- PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
- php 解决项目中多个自动加载冲突问题
- php _autoload自动加载类与机制分析
- PHP的类自动加载机制
- PHP autoload与spl_autoload自动加载机制的深入理解
- 6.Composer实现PHP中类的自动加载
- PHP 自动加载的简单实现(推荐)
- 服务器会自动加载index.php文件和一些自己的常用疑问
- ubuntu上使用PHP依赖管理工具Composer(二)——自动加载
- phpexcel的自动加载与其他框架有冲突
- php的_autoload函数实现自动加载类的使用
- PHP面向对象之类的自动加载
- PHP自动加载类
- PHP的autoload自动加载机制实例
- Phalcon自动加载(PHP自动加载)
- php自动加载autoload机制示例分享
- php 自动加载类方法小结