簡體   English   中英

使用 PHP OOP 從父 class 訪問子 class 數據

[英]Accessing child class data from parent class with PHP OOP

我想使用相同的方法將一些數據從子 class 添加到父 class 並且還想檢索數據。 請檢查示例代碼,這將有助於您更好地理解。

class HTML{

    public function add_control(){

    }

    public function all_controls(){

    }

}

class Control1 extends HTML
{

    public function register_controls()
    {

        $this->add_control([
            'name' => 'a',
            'label' => 'A',
        ]);

        $this->add_control([
            'name' => 'b',
            'lable' => 'B',
        ]);
    }

}

class Control2 extends HTML{

    public function register_controls()
    {

        $this->add_control([
            'name' => 'c',
            'label' => 'C',
        ]);


    }
}

(new HTML)->all_controls();

樣品 Output ['a','b','c'] 希望你明白我的意思。

我假設您的數據位於 class 變量中。 我不太明白你的意思。 獲取孩子的數據是不可能的......使用 static class 變量是可能的,但是您將無法在 add_control( $this add_control($data) ZC1C425268E6837A94F1 然后,所有數據將存儲在一個變量中,該變量由所有三個類共享。 這是我解決您問題的方法,希望它能解決您的問題。

<?php

class HTML{
    protected static $data;

    public function add_control($data) {
        self::$data[] = $data;
    }

    public function all_controls() {
        var_dump(self::$data);
    }

}

class Control1 extends HTML
{

    public function register_controls() {

        $this->add_control([
            'name' => 'a',
            'label' => 'A',
        ]);

        $this->add_control([
            'name' => 'b',
            'lable' => 'B',
        ]);
    }

}

class Control2 extends HTML{

    public function register_controls() {
        $this->add_control([
            'name' => 'c',
            'label' => 'C',
        ]);
    }
}
$html = new HTML();
$control1 = new Control1();
$control2 = new Control2();
$control1->register_controls();
$control2->register_controls();
$html->all_controls();
?>

編輯:
all_controls() Zeller... 則無需創建 class HTML 的 object。 如果這適合您的問題。

class HTML {

public static function all_controls() {
      var_dump(self::$data); //or any other echo method
}

}
//other stuff...
$control1->register_controls();
$control2->register_controls();
HTML::all_controls(); //no object of HTML necessary

暫無
暫無

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

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