[英]PHP type hinting with visiblity
protected
保護的protected Service $service
中受保護的內容是什么?
public function __construct(protected Service $service)
{
}
這個功能叫什么?
如果我使用受保護,那么我不需要聲明和初始化$service。 這怎么可能?
class Sample
{
public function __construct(protected Service $service)
{
}
public function process()
{
$this->service->test();
}
}
class Service
{
public function test()
{
echo "test";
}
}
$obj = new Sample(new Service());
$obj->process();
它是在 PHP 8 中引入的簡寫
之前:簡單值對象的定義需要大量的樣板,因為所有的屬性都需要至少重復四次。 考慮以下簡單的 class:
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0,
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
之后:但是現在 PHP 引入了Constructor Property Promotion一種簡寫語法,它允許結合屬性的定義和構造函數:
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.