-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 に答える