0

私はphpコールバックを介して自分の道を進んでいます。基本的なことは説明したと思いますが、クラスの拡張機能で作業しているときは、まだしばらくの間、どこかでレンガの壁にぶつかっています。そのため、スタック オーバーフローのラバー ダック プログラミングを行うときが来ました...!

クラス拡張機能からのコールバックの呼び出し:

class myClass {
    function cb_check($function) {
        call_user_func($this->$function);
    }

    static function myFunction() {
        var_dump("Hello World");
    }   
}

class myExtClass extends myClass {
    function cb_invoke() {
        $this->cb_check('myFunction');
    }
}

$x = new myExtClass;
$x->cb_invoke();

エラー メッセージ (または通知と警告):

Notice: 未定義のプロパティ: F:\test.php の 5 行目の myExtClass::$myFunction

警告: call_user_func() は、パラメーター 1 が有効なコールバックであることを期待しています。5 行目の F:\test.php で配列または文字列が指定されていません。

5行目はcall_user_func()上記です。

私がここで何が欠けているのか誰にも分かりますか?

前もって感謝します!

4

3 に答える 3

4

マークが指摘したように、

call_user_func($this->$function);

いずれかで置き換える必要があります

call_user_func(array($this, $function));

また

call_user_func('self::' . $function);

ありがとう、マーク!

于 2013-09-11T20:40:50.947 に答える