我无法理解构造函数中的类型提示和初始化参数。 我偶然发现了这段代码:
class TabController {
protected $post;
protected $user;
public function __construct(Post $post, User $user)
{
$this->post = $post;
$this->user = $user;
}
}
我认为如果没有像这样设置那些参数不是可选的:
public function __construct(Post $post=NULL, User $user=NULL)
这些示例似乎都初始化了一个空对象(而不是NULL)。
如果我在普通函数中尝试第一个例子,如果我不提供参数,则会失败。
答案 0 :(得分:1)
首先,输入提示。 它用于验证输入数据。 例如:
class User {
protected $city;
public function __construct(City $city) {
$this->city = $city;
}
}
class City {}
class Country {}
$city = new City(); $user = new User($city); //all ok
$country = new Country(); $user = new User($country); //throw a catchable fatal error
其次,初始化一个空对象。 这样做如下:
class User {
protected $city;
public function __construct(City $city = null) {
if (empty($city)) { $city = new City(); }
$this->city = $city;
}
}
答案 1 :(得分:0)
好的,事实证明Laravel框架利用PHP的Reflection工具进行自动解析。案例已关闭。谢谢你试图帮忙!