我正在观看关于编码规则的Jeffs Laracast教程之一.
function signUp($subscription)
{
if ($subscription == 'monthly')
{
$this->createMonthlySubscription();
}
elseif ($subscription == 'forever')
{
$this->createForeverSubscription();
}
}
他想在这里使用多态和接口.他将上面的代码更改为:
function signUp(Subscription $subscription)
{
$subscription->create();
}
我不明白他在这里做了什么.他是否将“Subscription”接口作为函数参数传递..?我以前从未在所有关于接口的教程中看到过这一点.
解决方法:
function signUp(Subscription $subscription)
{
$subscription->create();
}
这种方法需要一个名为$subscription的参数.此参数必须是实现Subscription接口的具体对象(或null).
这是通过参数之前的所谓“类型提示”(http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration)来完成的.
订阅不需要是这里的接口 – 它也可以是一个类,并且给定的参数必须是Subscription的实例或任何派生类型.