-1

メソッドをオーバーライドしようとしていますが、関数が見つからないというエラーが表示されます。次に例を示します。

abstract class a {
    public function build(){
        $this._loadComponents();
        return $this;
    }

    abstract protected function _loadComponents();
}

class b extends a {
    protected function _loadComponents(){
        echo "test";
    }
}
$b = new B();
$b->build();

結果: 致命的なエラー: 未定義関数の呼び出し

私は何を間違っていますか?

4

4 に答える 4

1

$this.3 行目にあるはずです$this->.PHP の連結演算子です。

于 2013-04-19T10:42:05.723 に答える
0

PHP.では連結マーカーです。使用する必要があります$this->_loadComponents()

于 2013-04-19T10:43:14.173 に答える
0

使用する

$this->_loadComponents();

それ以外の

$this._loadComponents();

ドット (.) 演算子は 2 つ以上の文字列を連結するために使用され、this(->) 演算子はクラス プロパティと関数にアクセスするために使用されます。

于 2013-04-19T10:41:50.027 に答える
0

これを見てください:

<?php
abstract class a {
    public function build(){
        $this->_loadComponents();
        return $this;
    }

    abstract protected function _loadComponents();
}

class b extends a {
    protected function _loadComponents(){
        echo "test";
    }
}
$b = new B();
$b->build();
?>
于 2013-04-19T10:53:44.940 に答える