php __autoload 命令行,PHP autoload实现自动加载类_PHP教程

autoload机制可以使得PHP程序有可能在使用类时才自动包含类文件,而不是一开始就将所有的类文件include进来,这种机制也称为lazy loading。

下面是使用autoload机制加载Person类的例子:

代码如下

复制代码

/* autoload.php */

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;

}

}

http://www.bkjia.com/PHPjc/633080.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633080.htmlTechArticleautoload机制可以使得PHP程序有可能在使用类时才自动包含类文件,而不是一开始就将所有的类文件include进来,这种机制也称为lazy loading。 下...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值