Передать интерфейс в качестве аргумента какой-либо функции

Я хочу знать. Я нашел это в классе Symfony2 TranslationLoader:

public function addLoader($format, LoaderInterface $loader)
{
$this->loaders[$format] = $loader;
}

я нашел LoaderInterface есть только один метод. Но откуда мы знаем реализацию этого интерфейса? Это интерфейс впрыска?

0

Решение

Внедрение интерфейса это вещь, но на самом деле то, что вы видите в фрагменте Тип Хинтинг, форма сильная типизация.

Что это делает, это принудительно во время выполнения, что значение передается в $loader должен соответствовать определению интерфейса (или класса), указанному в подсказке типа. В основном ответ на вопрос:

Есть ли $loader реализовать все методы LoaderInterface?

Если этого не произойдет, вы получите ловимая фатальная ошибка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]