0

クラス( function )に関数を設定する機能が欲しいsetFunctionです。getFunction後で、外部から呼び出すことができる関数 (with ) を取得したい(パラメーターを指定するなど)。これが私が試したことです:

class Test
{
    var $function;

    function setFunction($foo)
    {
        $this->function = $foo;
    }

    function getFunction()
    {
        return $this->function;
    }

    function foo1($a)
    {
        print "foo1: ".$a."\n"; 
    }

    function foo2($b)
    {
        print "foo2: ".$b."\n"; 
        }

}

$oClass = new Test();
$oClass->setFunction($oClass->foo1);
$oClass->getFunction()('test'); # <--- line 32

期待される出力は

foo1: test

しかし、代わりにエラーが発生します:

PHP Parse error:  syntax error, unexpected '(' in tester.php on line 32

これを解決する方法はありますか?以下にいくつかの制約を示します。

  • これは、各関数の任意のパラメーターに対して機能する必要があります。
  • 定義される関数は、常にクラス自体で指定されます (それが役立つ場合)。
4

2 に答える 2

4

使用する必要がありますcall_user_func

$oClass = new Test();
$oClass->setFunction(array($oClass, 'foo1'));
call_user_func($oClass->getFunction(), 'test');

array($oClass, 'foo1')クラス インスタンスでのメソッドの呼び出しを表すcallableですfoo1$oClass

于 2013-04-19T07:45:08.313 に答える
-1

php の関数はオブジェクトではありません。このようにすることはできません。

于 2013-04-19T07:44:57.317 に答える