PHP实现自动加载机制
发布:smiling 来源: PHP粉丝网 添加日期:2022-05-07 09:34:47 浏览: 评论:0
这篇文章主要介绍了PHP实现自动加载机制,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下。
php自动加载
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();
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/controllers', 'application/models', 'application/library');
- set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $config['include']));
在获取URL,解析出控制器与方法.
然后设置自动加载
- class Loader
- {
- /**
- * 自动加载类
- * @param $class 类名
- */
- public static function autoload($class)
- {
- $path = '';
- $path = str_replace('_', '/', $class) . '.php';
- include_once($path);
- }
- }
- /**
- * sql自动加载
- */
- spl_autoload_register(array('Loader', 'autoload'));
路由,实例化控制器,调用方法,你写的东西就开始执行了。
- /**
- * 路由
- */
- 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');
- }
初步的自动加载就完成了。
Tags: PHP自动加载机制
- 上一篇:PHP使用QR Code生成二维码实例
- 下一篇:最后一页
相关文章
- ·PHP自动加载机制实例详解(2021-10-05)
- ·PHP MVC框架中类的自动加载机制实例分析(2021-12-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)