簡體   English   中英

PHP 類型提示與可見性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM