PHP类与全局设置耦合

Adr*_*ian 0 php class inversion-of-control

关于我正在研究的项目使用的设计模式,我需要一些建议.假设我有很多类将使用依赖注入和IoC容器进行实例化.很多这些类将依赖于"环境"设置,例如依赖于服务器位置的memcached类,以及依赖于SQL主机详细信息的SQL类,但我不确定如何编写此依赖关系.

我可以将这些写入课堂,但它并不灵活.如果我让类使用全局变量,我觉得它们不再松散耦合,单元测试将更难完成.因此,如何保持松散的类耦合但是从中心位置维护这些设置?

如果服务器设置改变,我不想挖掘12个PHP脚本来更改每个设置.

理想情况下,我想:

  • 集中设置和配置
  • 不隐式耦合到外部实体的类
  • 能够进行单元测试!

干杯! 阿德里安

lik*_*eit 5

我不得不承认我是KISS的粉丝.根据你的写作,我会做以下事情:

创建一个包含变量的配置类:

class Configuration {
     protected $sqlUser = "myUser";
     protected $sqlPass = "myPass";
     // ... and the remaining config variables

     public function getSQLUser() {
         return $this->sqlUser();
     }

     public function getSQLPass() {
         return $this->sqlPass;
     }
     // ... and the remaining getters
}
Run Code Online (Sandbox Code Playgroud)

这使您可以完全控制将来如何继续进行配置.你可以通过改变这门课程,

  • 从本地配置文件中读取它
  • 根据服务器的机器名称(或任何其他属性)生成它
  • 如果您正在运行测试,请改变它

我自己这样做.这足以满足我的需求,它避免了建筑摩天大楼.