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