この例は、Edward Lecky-Thompson 著の本「Professional PHP5」からのものです。
function __get($propertyName) {
if(!array_key_exists($propertyName, $this->propertyTable))
throw new Exception("Błędna własność \"$propertyName\"!");
if(method_exists($this, 'get' . $propertyName)) {
return call_user_func(array($this, 'get' . $propertyName));
} else {
return $this->data[$this->propertyTable[$propertyName]];
}
}
call_user_func関数で何が起こるかを正確に段階的に説明してもらえますか?
php.net で、最初のパラメーターは呼び出される関数であり、残りのパラメーターはその関数にパラメーターとして渡されることを読みました。
php.net には簡単な例があり、問題なく理解できました。しかし、なぜ上記の例に配列があり、配列の最初の要素が $this なのかわかりません。
PSスタックオーバーフローで同様の質問を見つけました。コードが何をすべきかは理解していますが、書かれたものが機能する理由を完全には理解していません。
同様の質問へのリンクは次のとおりです: PropertyObject