ThinkPHP 如何保證在EXT_CONFIG文件中使用U方法返迴結果正確

2015-03-31 11:04:00
hainuo
原創 2450
摘要:開髮中使用瞭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行
發錶評論
柒 乘 玖 =
評論通過審核後顯示。