Я смотрю один из учебников Jeffs Laracast о правилах кодирования.прохождение интерфейса как функциональный параметр (PHP)?
function signUp($subscription)
{
if ($subscription == 'monthly')
{
$this->createMonthlySubscription();
}
elseif ($subscription == 'forever')
{
$this->createForeverSubscription();
}
}
Он хочет использовать здесь полиморфизм и интерфейсы. Он изменяет приведенный выше код на:
function signUp(Subscription $subscription)
{
$subscription->create();
}
Я не понимаю, что он здесь делает. Проводит ли он интерфейс «Подписка» как параметр функции ..? Я никогда не видел этого во всех предыдущих руководствах об интерфейсах.
Вы уверены, что '$ subscription' - это интерфейс, а не класс? – Daan
'$ subscription' должен быть объектом класса, который реализует интерфейс' Subscription'. Таким образом, вам не нужно указывать определенный класс как параметр функции – RomanPerekhrest
Это так называемый тип подсказки. Смотрите здесь: http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration – colburton