簡體   English   中英

從父母那里獲得兒童課道具

[英]accessing a child class prop from parent

我的意思是這樣的:

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}

我如何從父母的道具中獲得兒童道具?

謝謝...

我可能不完全了解您想要什么,或者解決方案與以下代碼一樣瑣碎。

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}
$object = new childClass();
$object->method();

我的意思是子類正在擴展基類,這意味着它還將繼承其父類的所有方法。 這使得使用父類的類方法的整個過程就像從子類的實例調用它一樣簡單。

在PHP的父類中可以看到子類的所有受保護成員和公共成員,因此您提供的示例代碼應該可以正常工作。 從php doc引用

聲明為protected的成員只能在該類內部以及繼承的和父類訪問。

但是實際的問題是:您真的需要嗎?

正確的OO方法將是定義一個表達某些內容的自包含父類。 不需要訪問子類的屬性-這是所謂的代碼氣味 如果您確實認為有必要使用類似的構造的情況,那么您可能正在尋找抽象方法,該方法保證每個子類都具有此屬性:

abstract class Animal {
    public function makeNoise() {
        echo $this->getNoiseString();
    }
    protected abstract function getNoiseString();
}

class Cat extends Animal {
    protected function getNoiseString() {
        return 'meow';
    }
}
//parent
class parentClass {

    protected $prop = null;

    public function method() {
        echo $this->prop;
    }
}

//child
class childClass extends parentClass {
    protected $prop = 5;
}

確保變量也在父類中定義。 因此,父級將可以訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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