由于最近一直在使用thinksns,所以相对关注的就比较多了一点。BUG偶尔也会发现一些,小的就不提了,没意义,偶尔也有可能是手误的关系,但一些稍大一点的。我还是写下来做个记录。。
比如这个插件配置的BUG。
一般来说,项目的配置要覆盖原始配置都是array_merge就结束了。于是乎,ThinkSNS在每个插件的Conf目录下的Config文件里也都有这么一行。
然而。。。问题就出来这里,插件的作者好象都没有注意过Array_merge的作用范围。
大多情况都是这样写的:
PHP代码
- $miniConfig = array (
- 'DEBUG_MODE' => false,
- 'DEFAULT_ACTION' => 'index',
- );
- $array = require_once( SITE_PATH.'/config.inc.php' );
- $array = array_merge( $miniConfig,$array );
XML/HTML代码
- array_merge() merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.
- If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended.
- If only one array is given and the array is numerically indexed, the keys get reindexed in a continuous way.
看到第二段没?如果有相同的KEY,后面的会覆盖前面的。。那么。。上面第6行的array_merge,和没运行有什么区别???
把参数顺序颠倒一下就OK了。。。