如何使用关键字“静态”使其按预期工作?

时间:2013-07-16 12:06:00

标签: php

我正在为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。那么,到底应该怎么样呢?

1 个答案:

答案 0 :(得分:2)

只需更改

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

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

请参阅here