以下のようなクラス階層があります。
class foo()
{
function __construct($dfnname) {
$this->callf = $dfnname;
}
function getd()
{
return call_user_func($this->callf);
}
function retrieve()
{
return $this->getd();
}
}
class bar extends foo
{
function getd()
{
return 'invalid call';
}
function getc()
{
return 'valid call';
}
}
$ins = new bar('getc');
echo $ins->retrieve();
私は答えを得ています'invalid call'
。「有効な呼び出し」という回答を取得したい。
from 関数のせいかもしれませんが、 をfoo=>retrieve()
呼び出します$this->getd()
。ここでは、 を呼び出す代わりに、 をfoo=>getd()
直接呼び出してbar=>getd()
います。関数を呼び出す必要がfoo=>getd()
ありfoo=>retrieve()
ます 。call_user_func($this->callf)
foo=>getd()
bar=>getc()
基本的な継承の概念が欠けていることはわかっています。私を案内してください。