$tpl = new Smarty();
$tpl->configLoad('compose.conf');
$config = $tpl->getConfigVars();
print_r($config);
它返回
Array()
这是什么,我做错了?
compose.conf
[jquery]
jquery = lib/jquery/jquery.js
[jquery_validate]
css=res/css/jquery.validate.css
js=lib/jquery/jquery.validate.js
X=jquery
[bootstrap_css]
main = lib/bootstrap/css/bootstrap.min.css
theme = lib/ootstrap-theme.min.css
[bootstrap_js]
js = lib/bootstrap/js/bootstrap.min.js
X=jquery
[bootstrap]
X=bootstrap_css,bootstrap_js
[utils]
utils=lib/utils/utils.js
odo=lib/utils/utils.odo.js
require=libutils/utils.require.js
template=lib/utils/utils.template.js
X=jquery
答案 0 :(得分:1)
根据parse_ini_file的手册:
注意:保留字不得用作ini文件的密钥。其中包括:
null
,yes
,no
,true
,false
,>>>on
<<&lt ;,off
,none
。值null
,off
,no
和false
会产生""
。值on
,yes
和true
会产生"1"
。字符?{}|&~![()^"
不得在键中的任何位置使用,并且在值中具有特殊含义。
如果我们尝试在您的文件we get the following error上执行parse_ini_file
(或parse_ini_string
):
警告:语法错误,第7行的未知中出现意外BOOL_TRUE 在第32行的/ tmp / execpad-e67cf6f095ae / source-e67cf6f095ae
因此,当您尝试解析INI文件时,Smarty会因为您使用保留字而收到错误(我假设它在内部使用其中一个函数)。解决方案是简单地将ON
重命名为其他内容。
<强>更新强>:
Smarty没有使用这些函数,但是它的解析器复制了它。 smarty_internal_configfilelexer.php
的第313行引用"on"
:
if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) {
// ^^
答案 1 :(得分:1)
在你的smarty插件目录中 smarty_internal_config.php 搜索声明
if (!empty($sections)) {
现在用
替换此语句 if($sections=='*'){
foreach ($_config_vars['sections'] as $key=>$value) {
if (isset($value['vars'])) {
$scope_ptr->config_vars[$key] = $value['vars'];
}
}
} else if (!empty($sections)) {
并在加载文件时使用它
$tpl = new Smarty();
$tpl->configLoad('compose.conf','*');
$config = $tpl->getConfigVars();
print_r($config);
多数民众赞成:)