У меня есть абстрактный класс, определенный следующим образом:
abstract class Abstract Parent extends Zend_Db_Table_Abstract {
abstract function funcA($post);
abstract function funcB();
public function newEntry($post) {
$t1 = $this->funcA($post);
$t2 = $this->funcB();
}
}
Дочерний класс определяет два абстрактных метода следующим образом:
require_once 'atablemodel.php';
class Child extends AbstractParent {
public function funcB()
{
return 'Some Value';
}
public function funcA($post)
{
$data = array(
'v1' => htmlentities($post['v1'])
);
return $data;
}
}
Однако, когда я пытаюсь это сделать, я получаю сообщение об ошибке:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /var/www/.../abstractparent.php on line 27
это строка, в которой абстрактный родительский объект вызывает один из абстрактных методов. Я хочу, чтобы эта строка вызывала дочерний метод, который определен.
Теперь я предполагаю, что есть способ сделать это, и, поскольку я новичок в PHP, я делаю что-то в корне неправильно. Любые предложения относительно того, что я мог бы сделать, чтобы решить эту проблему? Если бы я определил два абстрактных метода как имеющие реализации, а затем переопределил эти методы во всех дочерних элементах (то есть вообще не имел дело с абстрактными классами), как бы я гарантировал, что родитель, вызывающий один из этих методов, вызовет соответствующий дочерний метод во время выполнения?
EDIT
В свете различных комментариев о проблеме комбинирования статического и абстрактного я переопределил классы, как указано выше, с новой ошибкой, также показанной выше.