如何在SilverStripe中定义具有全局范围的数组?

Hig*_*lar 1 php arrays global global-variables silverstripe

目前我在_config.php中有以下内容

$myConfigArray = array(
  'key1' => 'val1',
  'key2' => 'val2'
);
Run Code Online (Sandbox Code Playgroud)

但是,我的一个控制器中的某个功能无法看到该阵列.除非我声明"global $ myConfigArray",否则它是未定义的,在这种情况下它是空的.

我在这做错了什么?

wmk*_*wmk 8

不要使用全局变量.不要这样做!如果由于某种原因安装的另一个模块具有相同的变量并覆盖您的设置,则可能会出现问题.

您可以将它放在_config/config.yml中,它也将被缓存:

MyConfig:
  Foo:
    key1: value1
    key2: value2
Run Code Online (Sandbox Code Playgroud)

(注意yml的正确意图!)

您可以使用Config API访问它,例如

$foo = Config::inst()->get('MyConfig', 'Foo');
Run Code Online (Sandbox Code Playgroud)