如何处理常量和依赖注入

bbl*_*lue 5 php dependency-injection

更新我的问题可能比下面解释的更简单:使用依赖注入时我不应该使用其他类的常量吗?

我正在转换许多类以注入它们的依赖项,而不是在类中定义它们。到目前为止一切都很好。

但是,我有许多常量,特别是与事件调度程序系统相关的常量,我不太确定如何处理它们。

例如:

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)...?

Jin*_*ksy -1

如果您需要的只是一个字符串,则仅传递该字符串。尽量避免让你的类依赖于复杂的结构/对象如果你的构造函数变得太复杂(参数太多),你可以尝试使用类似构建器模式的东西来收集所有参数并创建一个对象。

  • 然后,发起类需要了解使用字符串的类的内部工作原理,因此可能违反了一些良好的编程规则? (2认同)