-2

我正在准备 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。那么,这到底应该是什么样子呢?

4

1 回答 1

2

简单地改变

public function create() {
    return new self();
}

public static function create() {
    return new static();
}

这里

于 2013-07-16T12:10:22.227 回答