将相同参数传递给每个函数的替代方法

时间:2014-09-26 11:57:21

标签: php parameters

我为我的项目创建了一个注册表模式,可以实例化或获取对任何对象的现有引用。

但是,现在我发现自己必须将$registry传递给项目中的几乎所有函数和构造函数,因为它们中的大多数都需要自己实例化其他类。这本身并不是很糟糕,这就是注册表应该做的事情,但是我希望保持我的功能更纯粹,只需要它独有的参数

我可以将类扩展到具有$registry对象的父级,但由于我们正在处理PHP而你只能扩展一个类,所以这不是一个很好的解决方案。

以下是一个更好地说明它的例子。

Class controller {
  __construct($registry,other parameters) { check conditions; addView($registry); }
  addView( viewObject($registry);
}

任何保持设计更优雅的想法,而不是一直传递$registry

1 个答案:

答案 0 :(得分:0)

我决定为我的项目使用$ GLOBALS ['registry']。

这是唯一使用和允许使用的全局。虽然全局变得不受欢迎,因为它可以引入错误并使代码更难维护,但是你需要99%的函数上的注册表使项目保持干净,不会将注册表传递给所有函数,而且它是唯一的全球性大大降低了滥用的风险。