更新我的问题可能比下面解释的更简单:使用依赖注入时我不应该使用其他类的常量吗?
我正在转换许多类以注入它们的依赖项,而不是在类中定义它们。到目前为止一切都很好。
但是,我有许多常量,特别是与事件调度程序系统相关的常量,我不太确定如何处理它们。
例如:
const STORAGE_SYSTEM_FLUSHED = MyDatabaseEvents::FLUSHED;
public function myFunctionForSO() {
$this->ed->addListener(self::STORAGE_SYSTEM_FLUSHED, function() {
// do some stuff
});
}
Run Code Online (Sandbox Code Playgroud)
MyDatabaseEvents::FLUSHED只不过是一个用于标识事件的字符串,通常类似于"services.database.flush",但我的方法导致我的类变得依赖于 MyDataBaseEvents 等类。
仅仅为了这个字符串注入对象感觉有点过分了。这通常是如何处理的?
1)注入全局设置类?
2)注入全局事件标识符类?
3)由调用类配置?
4)...?
我遇到了与自定义 Doctrine 2 Hydrator 的依赖注入几乎相同的问题,但我需要将服务注入到自定义数据类型中,而不是注入到 Hydrator 中。
所引用问题中的解决方案依赖于在 Doctrine 初始化类本身时复制和修改 Doctrine 源代码。希望另一种方法对自定义数据类型可行吗?
这是针对 Symfony3 应用程序的,如果可以在那里应用一些魔法的话。