Silverstripe的配置API是单身人士吗?

时间:2016-03-03 14:40:46

标签: php silverstripe

根据文件,

由于三个属性API,配置API可以被视为与SilverStripe系统中的其他形式的变量分开:

Configuration is per class, not per instance.
Configuration is normally set once during initialization and then not changed.
Configuration is normally set by a knowledgeable technical user, such as a developer, not the end user.

问题是配置API是一个Singleton?

1 个答案:

答案 0 :(得分:1)

它的行为类似于Singleton,因为对Config API的大多数访问都会通过Config::inst(),它将始终返回当前活动的Config实例。此实例将保持不变,直到您决定使用Config::set_instance($myNewConfigInstance)更改它。

所以是的,那里有一个Singleton模式,但是你仍然可以拥有多个Config个实例(你可以使用它来隔离环境,比如测试或其他)。

以下是在代码执行期间如何切换Config的示例:

// preserve old config
$defaultConfig = Config::inst();
// create a new config
Config::set_instance(new Config());

// … do stuff that will use the new config

// switch back to the default config once you're done
Config::set_instance($defaultConfig);