私は__call()
でいくつかの混乱があると私はそれについての検索すべてが、それは結果は私がC
しかしB
取得のエコーの関数を呼び出すことであるように私が欲しいもの、だから、PHP - __call()混乱
<?php
class A {
abstract public function C();
private function B(){
echo "B";
}
public function __call($method,$arguments){
if(method_exists("C", $method)) {
$this->B();
return call_user_func_array(array("C",$method),$arguments);
}
}
}
class B extends A{
public function C(){
echo "C";
}
}
$b = new B();
$b->C();
//the result I get:
// C
//the result I want;
// BC
?>
を動作するはずです私に語りました最初に出てください。ある時点でうまくいきましたが、私は何が起こっているのか本当に混乱しています。 PHPのマニュアルでは、少なくとも私がやろうとしていることではないことも明らかです。
ノート:ほとんどの混乱があり、上記の__callメソッドは、私がそこにテストメッセージをすれば、それを印刷しない、もはやreponsiveではありません。
このように、私はいくつかの魔法の瞬間に動作するようにしました。誰かが私が間違ってやっていることを指摘できますか、それとも可能でしょうか? 。(それは、シナリオを変更している場合がありますので、私は、時間をかけていくつかのものを変更した
を行う必要があります動作するように取得するには、クラス
を
B()
を呼んでいるあなたが実際に私はあなたが尋ね追加した – Machavity@Machavityこれらの関数を呼び出すコードを表示してくださいこれは、私が持っているシナリオです。 – Nytrix
オブジェクトコンテキストでアクセスできないメソッドを呼び出すと '__call()が呼び出されます.'' C() 'メソッドについては何もアクセスできない –