博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Yii Framework] spl_autoload_register 导致加载顺序冲突
阅读量:5075 次
发布时间:2019-06-12

本文共 1166 字,大约阅读时间需要 3 分钟。

php版本

davidhhuan@davidhhuan-ThinkPad-T410:~$ php -versionPHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli) (built: Sep 12 2012 18:59:41) Copyright (c) 1997-2012 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Yii版本

1.1.13

 

Yii Framework使用spl_autoload_register实现类的自动加载,这个很大的方便我们不用每次都要手动的去include一些类和函数。不过这样会导致一些问题,比如说,有一些extension,如,使用taobao,它自己内部也使用了spl_autoload_register来实现自动加载类,由于在框架的执行顺序里面,首先是执行了spl_autoload_register(array('YiiBase','autoload')),这样会导致smarty里面的spl_autoload_register不会执行,这样就会出现使用taobao过程中,找不到它里面的类。这种情况解决方法有两种,

1. 先卸载yii的,再注册yii的autoload,如以下代码,修改taobao的SDK的 Autoloader.php文件

spl_autoload_unregister(array('YiiBase','autoload'));spl_autoload_register(array($this, "loadClass"));spl_autoload_register(array('YiiBase','autoload'));

不过这种方法是要修改taobao的代码的,这样不利于taobao的升级,这时候,可以考虑使用第二种情况。

 

2. 优先注册了自己的autoload,如以下代码,是加在index.php里面的。

require_once(dirname(__FILE__).'/protected/extensions/taobao/TopSdk.php');require_once($yii);Yii::createWebApplication($config)->run();

这样的话,所有的autoload都会优先使用taobao的autoloader,可以避免找不到taobao的类,不过这样会导致一些性能上的小损失。

 

 

Have fun with Yii!

 

 

转载于:https://www.cnblogs.com/davidhhuan/archive/2013/02/06/2893592.html

你可能感兴趣的文章
轻量级MVC标准
查看>>
nmon监控数据分析
查看>>
call与apply简单介绍
查看>>
Python的多线程锁跟队列
查看>>
提取电话号码
查看>>
无需***,轻松提速 Github
查看>>
SVN 常识
查看>>
windows 安装 kalfka 并快速启动
查看>>
iOS-技巧性总结
查看>>
iOS开发UI篇—UITableview控件使用小结
查看>>
MT5:放大市场价格指标
查看>>
对类前置声明和包含头文件的一点理解
查看>>
new delete
查看>>
浅谈弹性盒子布局
查看>>
vlan基本命令配置 trunk链路配置
查看>>
整理c#学习中的知识点
查看>>
[Swift]LeetCode637. 二叉树的层平均值 | Average of Levels in Binary Tree
查看>>
[Xcode 实际操作]九、实用进阶-(26)对Storyboard(故事版)中的文字标签(Label)进行本地化处理...
查看>>
PyQuery库的使用
查看>>
rally问题合集
查看>>