我应该输入我的依赖注入变量吗?

时间:2010-12-17 18:41:38

标签: php interface dependency-injection design-patterns

假设类Foo需要注入类Bar。我是否应该键入方法参数,因为我知道Bar需要什么,或者我不应该键入它,以防将来Bar更改?

class Foo {
    public function __construct( Bar $bar ) {
        // do something
    }
}

或:

class Foo {
    public function __construct( $bar ) {
        // do something
        // the wrong class could be passed in here, but I'm also future-proof in case
        // another class provides similar functionality to Bar
    }
}

据推测,“最佳”答案是让Bar实现一个界面,但我真的觉得很难创建一个在可预见的未来只有一个扩展类的界面。什么是最佳做法?

1 个答案:

答案 0 :(得分:2)

简单易用的解决方案:现在输入Bar,然后创建一个界面并更改typehint。如果您正确使用重构实践并很好地设计代码,那么以后更改应该没有效果。