PHP - 通子和父类之间的变量

问题描述 投票:0回答:2

我想知道什么是对父母和孩子班级和更新一直执行类这类之间传递变量的最佳方式。比如我有一个执行的是子类里面这个父类:

class My_Class {

   public $data;
   public $data2;

   public function __construct() {  
   }

   public function output() {
       $data['key1'] = 1;
       $data['key2'] = 2;
       $data2['key1'] = 'a';
       $data2['key2'] = 'b';
       $child_class = new Child_Class();
       $child_class->output();
       print_r($this->data); // only contains  key1 & key2, I want to get key3 and 4 also
       print_r($this->data2);
   }

}

class Child_Class extends My_Class {

   public function __construct() {  
   }

   public function output() {
       $data  = parent::$data; // want to get data array but it's empty
       $data2 = parent::$data2; // want to get data2 array but it's empty
       this->set_data();
   }

   public function set_data() {
       $this->data['key3'] = 3;
       $this->data['key4'] = 4;
       $this->data['key3'] = 'c';
       $this->data['key4'] = 'd';
   }


}

$class = new My_class();
$class->output();

目前我执行子类的父类中,因为我需要填充父类的主要数据。本课程将基于一些变量执行子类。

什么是继承和父变量赋值给孩子和孩子家长的正确途径。如果我使用依赖注入来检索数据的扩展类我怎么能变量分配给父类的?

php class var extends
2个回答
1
投票

“你有一个例子” - 在这里你去....

<?php
class My_Class {
    public $data = array('key1'=>1, 'key2'=>2);
    public $data2 = array('key1'=>'a', 'key2'=>'b');

    public function output() {
        echo "MyClass::output\r\n";
        print_r($this->data);
        print_r($this->data2);
    }
}


class Child_Class extends My_Class {

    public function __construct() {
        $this->data['key3'] = 3;
        $this->data['key4'] = 4;
        $this->data2['key3'] = 'c';
        $this->data2['key4'] = 'd';
    }

    public function output() {
        echo "Child_Class::output\r\n";
        parent::output();
    }
}

$class = new Child_Class();
$class->output();

版画

Child_Class::output
MyClass::output
Array
(
    [key1] => 1
    [key2] => 2
    [key3] => 3
    [key4] => 4
)
Array
(
    [key1] => a
    [key2] => b
    [key3] => c
    [key4] => d
)

也可以看看:


0
投票

我的问题是一个类型,而不是$this->data我写$this->$data,$符号时,才需要在每个语句的开头。

上从而为未用子类共享的父类的局部范围的变量父类变量的访问时,我的第二个问题是省略$this->部分,应该用$this->variable

© www.soinside.com 2019 - 2024. All rights reserved.