目前我有在_config.php如何在SilverStripe中定义具有全局作用域的数组?
$myConfigArray = array(
'key1' => 'val1',
'key2' => 'val2'
);
以下然而,在我的控制器的一个功能是无法看到阵列。除非我声明“global $ myConfigArray”,否则它是未定义的,在这种情况下它是空的。
我在这里做错了什么?
目前我有在_config.php如何在SilverStripe中定义具有全局作用域的数组?
$myConfigArray = array(
'key1' => 'val1',
'key2' => 'val2'
);
以下然而,在我的控制器的一个功能是无法看到阵列。除非我声明“global $ myConfigArray”,否则它是未定义的,在这种情况下它是空的。
我在这里做错了什么?
不要使用全局变量。不要这样做!如果安装的另一个模块出于某种原因具有相同的变量并覆盖您的设置,则可能会造成麻烦。
你可以把它放在你_config/config.yml它也将被缓存:
MyConfig:
Foo:
key1: value1
key2: value2
(注意YML的正确intendation!)
可以使用配置API访问,例如
$foo = Config::inst()->get('MyConfig', 'Foo');
在_config.php
定义变量global
设置之前:
global $myConfigArray;
$myConfigArray = array(
'key1' => 'val1',
'key2' => 'val2'
);
然后在你的函数中使用它之前声明全局变量:
public function myFunction() {
global $myConfigArray;
$myConfigArray['key1'];
}
谢谢!只是标准的PHP方式,然后......我刚刚解决了这个问题,因为你的答案出现了:-) – 2014-11-05 22:19:45
这是一个非常好的方法来做到这一点。 – 3dgoo 2014-11-06 10:52:06