我正在为ZEND认证工程师考试做准备。使用TestPassport-Engine“虚拟考试”,我遇到了这个问题:
请考虑以下代码。应该在粗体标记的行中使用哪个关键字,以使此代码按预期工作?
abstract class Base {
protected function __construct() {}
public function create(){
// this line
return new self();
}
abstract function action();
}
class Item extends Base {
public function action () { echo __CLASS__; }
}
$item = Item::create();
$item->action();
正确的答案是static
。那么,到底应该怎么样呢?
答案 0 :(得分:2)
只需更改
public function create() {
return new self();
}
到
public static function create() {
return new static();
}
请参阅here。