Как определить массив с глобальной областью действия в SilverStripe?

В настоящее время у меня есть следующее в _config.php

$myConfigArray = array(
'key1' => 'val1',
'key2' => 'val2'
);

Однако функция в одном из моих контроллеров не может видеть массив. Он не определен, если я не объявлю «global $ myConfigArray», в этом случае он будет пустым.

Что я здесь не так делаю?

1

Решение

Не используйте глобальные переменные. Не делай этого! Это может создать проблемы, если другой установленный модуль по той же причине имеет ту же переменную и перезаписывает ваши настройки.

Вы можете поместить его в ваш _config / config.yml, где он также будет кеширован:

MyConfig:
Foo:
key1: value1
key2: value2

(обратите внимание на правильное назначение yml!)

Вы можете получить к нему доступ, используя Config API, например,

$foo = Config::inst()->get('MyConfig', 'Foo');
8

Другие решения

В _config.php определить вашу переменную как global перед настройкой:

global $myConfigArray;
$myConfigArray = array(
'key1' => 'val1',
'key2' => 'val2'
);

Затем в вашей функции объявите глобальную переменную перед ее использованием:

public function myFunction() {
global $myConfigArray;
$myConfigArray['key1'];
}
2

По вопросам рекламы [email protected]