0

我想拥有在类(函数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')是一个可调用的,它表示foo1对类实例的方法的调用$oClass

于 2013-04-19T07:45:08.313 回答
-1

php 中的函数从来都不是一个对象。你不能这样做。

于 2013-04-19T07:44:57.317 回答