PHP autoload实现自动加载类
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-16 14:54:10 浏览: 评论:0
autoload机制可以使得PHP程序有可能在使用类时才自动包含类文件,而不是一开始就将所有的类文件include进来,这种机制也称为lazy loading。
下面是使用autoload机制加载Person类的例子,代码如下:
- /* autoload.php */
- <?php
- function __autoload($classname) {
- require_once ($classname . “class.php”);
- }
- $person = new Person(”Altair”, 6);
- var_dump ($person);
- ?>
PHP的autoload机制的实现,要在PHP中实现自动加载类,那就要说到一个魔术方法了,__autoload();这是PHP5添加的自动加载类方法,只要定义了该函数,那么如果PHP运行到该类找不到时,就会根据__autoload的规则去寻找。
自己也规划一下,跟set_include_path和get_include_path来配合使用,使自动加载类更完善点,代码飙一下(模仿magento的),代码如下:
- $paths[] = BP . DS . ‘app’ . DS . ‘local’;
- $paths[] = BP . DS . ‘app’ . DS . ‘base’;
- $paths[] = BP . DS . ‘lib’;
- $appPath = implode(PS, $paths);
- set_include_path($appPath . PS . get_include_path());
这样就可以为PHP添加默认的类加载环境,这里只是把路径添加到了PHP环境,如果还要继续添加规则,可以再定义__autoload函数,不过我这里是对象使用的,就换了一种方法:spl_autoload_register方法,下面是自己根据magento的规则,自己弄了一套,其实跟magento差不多,代码如下:
- class Autoload {
- /**
- * 自身对象
- *
- */
- protected static $_instance = null;
- public function __construct() {
- }
- /*
- * 实例化自身
- *
- */
- public static function instance() {
- if (null == self::$_instance) {
- self::$_instance = new self();
- }
- return self::$_instance;
- }
- /**
- *
- * 注册自动加载函数
- */
- public static function register() {
- spl_autoload_register(array(self::instance(), ‘autoload’));
- }
- /*
- *
- * 自动加载类
- */
- public function autoload($class) {
- if (!is_string($class)) {
- return;
- }
- $classFile = str_replace(‘ ‘, DS, ucwords(str_replace(‘_’, ‘ ‘, $class)));
- $classFile .= ‘.php’;
- return include $classFile;
- }
- }
Tags: PHP autoload 自动加载类
- 上一篇:PHP中MVC框架之文件入口实例详解
- 下一篇:php __call方法使用说明
相关文章
- ·PHP 面向对象 继承(2013-11-14)
- ·PHP面向对象开发——封装关键字(2013-11-14)
- ·php-对象的声名-构造-继承-案例(2013-11-14)
- ·开发大型PHP项目的方法(2013-11-27)
- ·php $$是什么意思(2013-11-28)
- ·几个PHP面向对象小实例(2013-12-08)
- ·关于PHP中的Class的几点个人看法(2013-12-08)
- ·PHP中的面向对象和面向过程(2013-12-08)
- ·PHP5.0中多态性的实现方案浅析(2014-01-14)
- ·PHP中MVC框架之文件入口实例详解(2014-01-16)
- ·php __call方法使用说明(2014-01-17)
- ·PHP面向对象之旅:static变量与方法(2014-01-17)
- ·php中关于抽象(abstract)类和抽象方法的问题解析(2014-02-10)
- ·PHP Class类与对象学习笔记(2014-02-10)
- ·PHP面向对象开发之魔术函数详解(2014-02-10)
- ·PHP面向对象开发之类的多态详解(2014-02-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)