这是一个抽象类和派生类的示例。类 A 中有一个抽象方法“collectData”,它在类 B 中实现。当调用方法“getData”时,会调用“collectData”,在私有成员变量“$data”中设置值。之后,getData 返回此变量的内容。如果你运行它,你会期望返回值是 array(1, 2, 3)。但它是一个空数组。为什么?顺便说一句,我正在使用 PHP 5.3.10。
<?php
abstract class A
{
private $data;
public function __construct()
{
$this->data = array();
}
abstract protected function collectData();
public function getData()
{
$this->collectData();
return $this->data;
}
}
class B extends A
{
protected function collectData()
{
$this->data = array(1, 2, 3);
}
}
$test = new B();
$data = $test->getData();
print_r($data);