Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我应该输入依赖项注入变量吗?_Php_Interface_Dependency Injection_Design Patterns - Fatal编程技术网

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

Php 我应该输入依赖项注入变量吗?,php,interface,dependency-injection,design-patterns,Php,Interface,Dependency Injection,Design Patterns,假设类Foo需要类Bar的注入。我应该键入提示方法参数,因为我知道Bar需要是什么,还是不应该键入提示,以防将来Bar发生变化 class Foo { public function __construct( Bar $bar ) { // do something } } 或: 大概,“最好”的答案是让Bar实现一个接口,但我真的觉得创建一个在可预见的将来只有一个扩展类的接口很愚蠢。最佳做法是什么?简单易行的解决方案:现在将typehint输入到栏中,然后创建

假设类Foo需要类Bar的注入。我应该键入提示方法参数,因为我知道Bar需要是什么,还是不应该键入提示,以防将来Bar发生变化

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


大概,“最好”的答案是让Bar实现一个接口,但我真的觉得创建一个在可预见的将来只有一个扩展类的接口很愚蠢。最佳做法是什么?

简单易行的解决方案:现在将typehint输入到
栏中,然后创建一个界面并在以后更改typehint。如果您正确地使用重构实践并设计好您的代码,那么更改在以后不会产生任何影响

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
    }
}