Php 如何将单元中的行为条件化为全局配置值

Php 如何将单元中的行为条件化为全局配置值,php,dependency-injection,architecture,singleton,solid-principles,Php,Dependency Injection,Architecture,Singleton,Solid Principles,如果我们想写S.O.L.I.D。编码将松散耦合和可测试单元内的行为调节为某个全局配置值的最佳方法是什么 注入某种包含信息的对象或仅仅引用全局静态/单例更好吗 我正在使用PHP,但我想这个问题与语言无关 提前感谢。如果您根据全局状态/配置有两种不同的行为,那么我可能会重构策略(策略模式),然后注入策略 然后,main的工作就是根据配置注入正确的策略 如果策略依赖于不断变化的配置,即在运行时发生变化的配置,则策略应包装在提供商/供应商中。(php可能不是这样) 备选方案可以是具有注入的通用特性切换类

如果我们想写S.O.L.I.D。编码将松散耦合和可测试单元内的行为调节为某个全局配置值的最佳方法是什么

注入某种包含信息的对象或仅仅引用全局静态/单例更好吗

我正在使用PHP,但我想这个问题与语言无关


提前感谢。

如果您根据全局状态/配置有两种不同的行为,那么我可能会重构策略(策略模式),然后注入策略

然后,main的工作就是根据配置注入正确的策略

如果策略依赖于不断变化的配置,即在运行时发生变化的配置,则策略应包装在提供商/供应商中。(php可能不是这样)

备选方案可以是具有注入的通用特性切换类型。然后可以从main设置切换,以返回true或false。 使用toggle对象,您可以拥有比使用简单布尔值更复杂的逻辑,但这取决于用例


但是我不喜欢另一种选择,因为如果我不知道两种不同的行为,那会更简单

为什么实现可靠原则的代码会包含全局状态?它不完全是全局状态。。。这更像是一种行为转换。我的问题是找到最好/最干净的方法将信息传递给单元…如果类中有全局或静态变量,它包含全局状态。没错!这就是为什么我想有一些方法将信息传递给类,而不是直接在类中访问它。请稍等。你的问题是“哪个更好”。。你似乎已经知道答案了,那么,我们能进入真正的问题吗?