OOP - 子类调用父类'方法不会丢失其上下文

时间:2015-12-04 15:02:43

标签: php oop inheritance

我有一个继承自A类的B类.A类定义了一个方法,例如toArray(),它将遍历属性并返回一个数组。

我想调用$ b-> toArray()并获取B的属性数组而不是A(尽管该方法在A中定义)。

这样的事情:

class A{
    public function toArray(){
        return get_object_vars($this); //$this WHAT is $this?! I want it to be different depending on the which class is instantiated.
    }
}

class B extends A{
    public $my_var = 'Some value';
}

$b = new B;
$b->toArray(); //should contain my_var

上面的代码失败了。它不会返回任何内容,因为A没有属性。我怎样才能通过OOP实现这一点(更确切地说,在PHP中,如果有的话,一般的解释会很好)。

1 个答案:

答案 0 :(得分:1)

方法本身是正确的,但问题是,你在A类中没有函数toArray()

您必须将您的功能foo()重命名为toArray()

请改为尝试:

class A {

    public function toArray() {
        return get_object_vars( $this ); //$this WHAT is $this?! I want it to be different depending on the which class is instantiated.
    }

}

class B extends A {

    public $my_var = 'Some value';

}

$b = new B;
var_dump( $b->toArray() ); //should contain my_var

输出:

array(1) {
  ["my_var"]=>
  string(10) "Some value"
}