[Yii Framework] spl_autoload_register 导致加载顺序冲突

php版本

davidhhuan@davidhhuan-ThinkPad-T410:~$ php -version
PHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli) (built: Sep 12 2012 18:59:41) 
Copyright (c) 1997-2012 The PHP Group
Zend 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!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python花呗分析模型温馨提醒:支出不规范,收入两行泪

全世界只有3.14 % 的人关注了数据与算法之美春节结束,离开家里混吃混喝的怀抱,我又开始了用花呗、还花呗的无限循环。花呗给人一种“有钱”的感觉,我不禁思考:像我这种发工资前靠花呗活着,一发工资就还花呗的平静什么时…

fiddler插件开发

Fiddler 是优秀的抓包工具,有着众多的优秀插件。Fiddler 软件是由C#语言开发的,运行在.net Framework 框架之上,所以我们也可以使用vs来开发自己的Fiddler插件,下面就介绍fiddler插件开发基本步骤。1.打开visual studio 创建一个V…

php读取excel函数,PHP读取Excel函数Spreadsheet_Excel_Reader

require (__DIR__./Spreadsheet_Excel_Reader.class.php);class ExcelReader {public static function readXLS($file){$data new Spreadsheet_Excel_Reader();$data->setOutputEncoding(UTF-8); //设置输出的编码为utf8$ret $data->read($file); //要读取的excel文件地…

2500 万行的代码就问你敢不敢动?!

全世界只有3.14 % 的人关注了数据与算法之美近日,某网友在 Hacker News 上发起了一个 “你见过的最糟糕的代码是什么?” 的问题,引起了广泛关注和讨论,评论数已接近600条。其中,一位 ID 为“oraguy”的程序员对 Oracle…

WPF Grid添加边框的两种方法

最近项目中使用到了Grid表格,居然要加边框,查了一下,grid原生居然是不支持实线边框的。。最终我还是实现了效果,看看吧:左边是直接写的每行一个border,每列写一个border,这样在行列比较少的时候还行,如果多…

php maximum,解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示...

解决分析:这个错误是说你的php 执行时间越过了配置文件中设置的最大执行时间30秒钟,这不是你的程序本身存在的问题,而 是系统的配置文件问题,如果你的网速快的话,可能再执行一次就不会出现这种错误了,不过 …

javaBean【02】javaBean与表单应用

对于javaBean&#xff0c;我们说就是一个*.java文件。对于javaBean的应用必须结合表单才能体现。我们来以一个实例学习javaBean的应用。 biaodan.html <html> <head> <title>WEB开发</title> </head> <body> <form action"javaBe…

当初互联网大佬给的几块钱“羊毛”,现在又要我们加倍还回去!

全世界只有3.14 % 的人关注了数据与算法之美对于上班族来说&#xff0c;春节早就过去了&#xff0c;今天已经是上班的第N天了。不知道大家在春节七天有没有走进电影院呢&#xff1f;在春节档期的八部电影各有各的特色&#xff0c;数据汪一一看完之后真是爽歪歪&#xff01;但是…

在 dotnet runtime 的容器中安装 dotnet global tool

在 dotnet runtime 的容器中安装 dotnet global toolIntro.NET Core 从 2.1 开始支持 Global tool, 借助 global tool 我们可以通过命令行来实现很多功能&#xff0c;微软提供的一系列的 dotnet 诊断工具也都提供了 global tool&#xff0c;我们可以通过 global tool 比较方便的…

java线程带来的异常,java多线程练习之捕获子线程异常例子

本文章给大家介绍java多线程练习之捕获子线程异常一个实例&#xff0c;希望对大家会有所帮助。java多线程程序中&#xff0c;所有线程都不允许抛出未捕获的checked exception&#xff0c;也就是说各个线程需要自己把自己的checked exception处理掉。但是无法避免的是unchecked …

Asymptote 学习记录(2):例子阅读

学习编程的一个有效方式是去读别人写的代码.我学习了这里的代码.代码虽多,但是简单.代码如下(稍微做了修改): import settings; pdfviewer"/usr/bin/okular"; outformat"pdf"; size(400); texpreamble("\usepackage{CJK}\AtBeginDocument{\begin{CJK}…

如何启发孩子的数学思维?你想要的答案或许在这!

▲数据汪特别推荐点击上图进入玩酷屋记得寒假时&#xff0c;超模君七岁小表弟来问了我一道题目&#xff1a;下面线段有多少条&#xff1f;首先我问了他什么是线段&#xff1f;他说&#xff1a;两端有端点&#xff0c;不可以伸长的直线。AB就是线段。我慢慢引导&#xff0c;假如…

.NET Core 服务在 ARM64 服务器中的部署

Linux 服务器 CPU 架构主要可分为&#xff1a;X86_64/AMD64、ARM64/AARCH64 两大类&#xff0c;大多情况使用的都是基于 AMD64 CPU 架构的服务器。但随着国产操作系统、CPU 等自主生态打造的应用产品得到越来越多的用户认可和应用&#xff0c;如&#xff1a;华为鲲鹏、统信 UOS…

php 读取onedrive文件夹,oneindex

oneindexOnedrive Directory Index功能&#xff1a;不用服务器空间&#xff0c;不走服务器流量&#xff0c;直接列onedrive目录&#xff0c;文件直链下载。demochange log:18-03-29: 更新直链获取机制、缓存机制&#xff0c;避免频繁访问的token失效18-03-29: 解决非英文编码问…

FreeSql使用WithSql+ ToSQL 查询数据

FreeSql是一个支持.NET Core 2.1、.NET Framework 4.0 以及 Xamarin的ORM(Object Relational Mapping)对象关系映射的组件支持丰富的表达式函数及类型映射&#xff0c;但还是有不少开发者需要执行自定义SQL。我一般会推荐他们使用List<T> list fsql.Ado.Query<T>(…

Linux makefile 教程

网上转帖&#xff1a;http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程&#xff0c;买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊&#xff0c;可能是我的理解能不行。于是google到了以下这篇文章。通俗易懂。然后把它贴…

50种奇妙装置玩法,将STEM教育一网打尽

▲数据汪特别推荐点击上图进入玩酷屋致砖《小小机器人》套装全新首发电动机械的完美结合先来看看视频过过眼瘾吧来自美国STEAM教育让孩子跨学科学知识积木向来是STEAM教育很重要的一部分&#xff0c;因为它涉及到了多种学科&#xff1a;要搭建得稳固——这是工程学&#xff1b;…

ubuntu php7.4,在Ubuntu 18.04/19.04/16.04版本上安装PHP 7.4的简单方法

以下介绍安装PHP 7.4的方法非常的简单&#xff0c;适用于Ubuntu 18.04/19.04/16.04版本上&#xff0c;所安装的版本是PHP 7.4.0 RC1&#xff0c;只需要添加PHP ppa存储库并运行相关命令即可完成安装。一、添加PHP ppa存储库我们将添加ppa:ondrej/php PPA存储库&#xff0c;它具…

通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载...

在上一篇文章里&#xff0c;我们通过注入sentinel component到apigateway实现了对下游服务的保护&#xff0c;不过受限于目前变更component需要人工的重新注入配置以及重启应用更新component等等原因&#xff0c;对于真实的环境运维稍有难度&#xff0c;最近我根据sentinel-gol…

NASA成立寻找外星人小组,三全水饺回应猪瘟,微波炉+葡萄=爆炸,94年故宫首次晚间开放,这就是今天的大新闻!...

元宵节刚刚过完汤圆也吃了好几碗是时候来回忆下发生了什么下面是今天的大新闻报&#xff01;故宫网站崩了&#xff0c;被众多人“围攻”&#xff01; &#xff08;搜狐新闻&#xff09;此前&#xff0c;故宫94年来首开夜场”的消息刷屏了&#xff01;故宫将在正月十五、十六开夜…