'TMPL_PARSE_STRING' => array(
'!-PUBLIC-!' => '/core/Public'
),而分组配置文件中存在: 'TMPL_PARSE_STRING' => array(
'!-Public-!' => BASE_LIB_PATH. 'Tpl/Public'
),这时在分组项目中将取不到全局中定义的!-PUBLIC-!(显示的是默认值“/Public”)。建议ThinkPHP能修改这部分。
先暂时可在thinkphp的common.php文件中添加一个自定义方法,
/**
* 多维数组 合并
*
* 支持 参数 和 array_merge 一样 2个参数以上 后面覆盖前面的
*
* 返回值 数组
**/
function array_merge_multi() {
$args = func_get_args();
if ( !isset( $args[0] ) && !array_key_exists( 0, $args ) ) {
return array();
}
$arr = array();
foreach ( $args as $key => $value ) {
if ( is_array( $value ) ) {
foreach ( $value as $k => $v ) {
if ( is_array( $v ) ) {
if ( !isset( $arr[$k] ) && !array_key_exists( $k, $arr ) ) {
$arr[$k] = array();
}
$arr[$k] = array_merge_multi( $arr[$k], $v );
} else {
$arr[$k] = $v;
}
}
}
}
return $arr;
},并修改C方法如下:function C($name = null, $value = null)
{
static $_config = array();
// 无参数时获取所有
if (empty($name)) {
if (!empty($value) && $array = S('c_' . $value)) {
$_config = array_merge($_config, array_change_key_case($array));
}
return $_config;
}
// 优先执行设置获取或赋值
if (is_string($name)) {
if (!strpos($name, '.')) {
$name = strtolower($name);
if (is_null($value))
return isset($_config[$name]) ? $_config[$name] : null;
$_config[$name] = $value;
return;
}
// 二维数组设置和获取支持
$name = explode('.', $name);
$name[0] = strtolower($name[0]);
if (is_null($value))
return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;
$_config[$name[0]][$name[1]] = $value;
return;
}
// 批量设置
if (is_array($name)) {
// $_config = array_merge($_config, array_change_key_case($name));
$_config=array_merge_multi($_config, array_change_key_case($name));
if (!empty($value)) { // 保存配置值
S('c_' . $value, $_config);
}
return;
}
return null; // 避免非法参数
} 最佳答案