亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何防止覆蓋PHP類中的父屬性?

如何防止覆蓋PHP類中的父屬性?

PHP
森林海 2021-04-30 10:36:46
我是PHP OOP的初學者。我想防止在子類啟動時覆蓋父類屬性。例如,我有 Parent和Child類,如下所示:class Parent {    protected $array = [];    public function __construct() {    }    public function add($value) {        $this->array[] = $value;    }    public function get() {        return $this->array;    }}class Child extends Parent {    public function __construct() {    }}首先,我啟動了Parent課程,向該array屬性添加了3個項目:$parent = new Parent;$parent->add('a');$parent->add('b');$parent->add('c');然后,我啟動了Child類,并向該array屬性添加了1個項目:$child = new Child;$child->add('d');實際結果:var_dump($parent->show()); // outputs array('a', 'b', 'c')var_dump($child->show()); // outputs array('d')預期結果:var_dump($parent->show()); // outputs array('a', 'b', 'c', 'd')var_dump($child->show()); // outputs array('a', 'b', 'c', 'd')我怎樣才能做到這一點?我試過了,但是沒有用:class Child extends Parent {    public function __construct() {        $this->array = parent::get();    }}
查看完整描述

3 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

我是用靜態變量來做的。我的課程現在是這樣的:


class Parent {

    protected static $array = [];


    public function __construct() {

    }


    public function add($value) {

        self::$array[] = $value;

    }


    public function get() {

        return self::$array;

    }

}


class Child extends Parent {

    public function __construct() {

    }

}

當我測試它時,我得到了我所期望的:


$parent = new Parent;

$parent->add('a');

$parent->add('b');

$parent->add('c');


$child = new Child;

$child->add('d');


var_dump($parent->show()); // outputs array('a', 'b', 'c', 'd')

var_dump($child->show()); // outputs array('a', 'b', 'c', 'd')


查看完整回答
反對 回復 2021-05-14
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

似乎擴展課程不是您想要在這里做的。

您應該閱讀有關類和對象之間的區別。也許您應該先做一個通用的OOP教程。

如果要在類的實例之間共享靜態變量,則需要使用靜態變量。


查看完整回答
反對 回復 2021-05-14
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

您應該這樣做。

$child = clone $parent; 
$child->add('d');


查看完整回答
反對 回復 2021-05-14
  • 3 回答
  • 0 關注
  • 178 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號