下面是一個抽象類和派生類的示例。在類A中有一個抽象方法,「collectData」,它在類B中實現。當調用方法「getData」時,調用「collectData」,並在私有成員變量「$ data」中設置值。之後,getData返回這個變量的內容。如果你運行這個,你會希望返回值是數組(1,2,3)。但它是一個空陣列。爲什麼?順便說一句,我使用PHP 5.3.10。當抽象方法返回時,PHP成員數據丟失
<?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);
該死,這樣一個簡單的監督。謝謝。 – colordrops