ThinkPHP 如何保证在EXT_CONFIG文件中使用U方法返回结果正确

2015-03-31 11:04:00
hainuo
原创 2582
摘要:开发中使用了ThinkPHP的扩展设置,在扩展设置中使用U方法时产生了问题,每一个链接前面包含着__APP__的字符串,这是怎么产生的,有要如何解决?
#20140415 发现此问题的一个bug 这样设置后会造成模块配置文件夹中config.php中定义个url_model 方式失效 这个问题是在采用下列方法修改后发现的,后来的修改策略是增加了新定义常量__APP_FIX__  使用url_model=2默认方式 来生成__APP__的值,当然对U方法也做了一定的修改。修改方法如下在dispacher.class.php第141行增加如下代码```// TODO 当该段代码(__APP__的定义代码)调整在此处后 会导致分模块中的URL_MODEL设置失效,所以提前定义一个 if(!defined('__APP_FIX__')){// $urlMode = C('URL_MODEL');// if($urlMode == URL_COMPAT ){// 兼容模式判断// define('PHP_FILE_FIX',_PHP_FILE_.'?'.$varPath.'=');// }elseif($urlMode == URL_REWRITE ) { $url = dirname(_PHP_FILE_);// dump($url); if($url == '/' || $url == '\\') $url = ''; define('PHP_FILE_FIX',$url);// }else {// define('PHP_FILE_FIX',_PHP_FILE_);// } // 当前应用地址 define('__APP_FIX__',strip_tags(PHP_FILE_FIX)); }```修改U方法在functions.php 第990行左右```if(C('URL_MODEL') == 0) {```前面增加 ``` if(defined('__APP__')) $phpfile=__APP__; else $phpfile=__APP_FIX__;```然后需要将后面的__APP__x修改为$phpfile到此修改完毕——————————————开发中使用了ThinkPHP的扩展设置,在扩展设置中使用U方法时产生了问题,每一个链接前面包含着__APP__的字符串,这是怎么产生的,有要如何解决?下面我给大家详细道明ThinkPHP 加载的扩展配置的时候是在think/dispatcher.class.php中调用的,调用的时候是先loadEXT_CONFIG 然后才检查__APP__时不时存在所以我们的解决办法比较简单,就是在加载EXT_CONFIG之前检查__APP__是不是存在即可。解决办法 将dispatcher.class.php 第179-193行  转移至 第141行
发表评论
拾 乘 零 =
评论通过审核后显示。