我有一个继承自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中,如果有的话,一般的解释会很好)。
答案 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"
}