第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 類中子級之間的靜態(tài)屬性共享/定義

PHP 類中子級之間的靜態(tài)屬性共享/定義

PHP
牧羊人nacy 2023-05-12 15:13:20
我對標(biāo)題描述的內(nèi)容存在誤解,我想知道是否有另一種方法可以實現(xiàn)我在那里尋找的東西。我有一個抽象類,它聲明了一個沒有值的靜態(tài)屬性,我從它實例化了定義該靜態(tài)屬性值的子類?;愡€根據(jù)第一個靜態(tài)屬性值定義了另一個靜態(tài)屬性值,但問題是子類正在為其他子類中定義的最后一個屬性值丟失第一個屬性值,然后第二個屬性從父類中獲取錯誤值。這段代碼比我解釋的更好地展示了它:abstract class A{    protected static $name;     protected static $path;    public function __construct()    {        static::$path = static::$name."Path";    }    public function getPath()    {        return static::$path;       }}class B extends A{    protected static $name = "B";   }class C extends A{    protected static $name = "C";   }$b = new B();$c = new C();echo $b->getPath();我希望 echo 打印“Bpath”,但不幸的是它打印“CPath”。如果我評論實例化 C 類的行,那么打印效果很好。編輯: 問題是如果我執(zhí)行此代碼:abstract class A{       protected static $name;    protected static $path;    public function __construct()    {        static::$path = static::$name."Path";    }    public function getPath()    {        return static::$path;       }    public function getName()    {        return static::$name;       }}class B extends A{    protected static $name = "B";   }class C extends A{    protected static $name = "C";   }$b = new B();$c = new C();echo $b->getName();印刷的名字是“B”,很好。因此,即使使用 static:: 關(guān)鍵字,在子類屬性中重新定義值的事實也不會產(chǎn)生與在構(gòu)造函數(shù)中這樣做相同的結(jié)果。
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經(jīng)驗 獲得超3個贊

靜態(tài)屬性$path只在類上定義一次A。從任何地方設(shè)置static::$path都將始終設(shè)置A::$path,因此該值在所有類之間共享。


protected static $path;如果你在兩個子類上聲明,你會看到不同的結(jié)果,例如:


class B extends A {

    protected static $name = "B";   

    protected static $path;

}

現(xiàn)在每個類都有自己的靜態(tài)$path屬性,并且可以獨立設(shè)置。


盡管使用實例屬性而不是使用靜態(tài)屬性向后彎曲會更有意義:


abstract class A {

    protected static $name;

    protected $path;


    public function __construct() {

        $this->path = static::$name . 'Path';

    }


    public function getPath() {

        return $this->path;   

    }

}


查看完整回答
反對 回復(fù) 2023-05-12
  • 1 回答
  • 0 關(guān)注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號