Допустим, класс 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 реализовать интерфейс, но я действительно чувствую себя глупо, создавая интерфейс, который будет иметь только один класс расширения в обозримом будущем. Какова лучшая практика?