我希望能够在类(函数setFunction
)中设置函数。后来我想得到函数(带getFunction
),我可以从外面调用(指定参数等)。这是我尝试过的:
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
任何想法如何解决这个问题?以下是一些限制因素:
答案 0 :(得分:4)
您必须使用call_user_func
:
$oClass = new Test();
$oClass->setFunction(array($oClass, 'foo1'));
call_user_func($oClass->getFunction(), 'test');
array($oClass, 'foo1')
是callable,表示在类实例foo1
上调用方法$oClass
。
答案 1 :(得分:-1)
函数不是一个对象。你不能这样做。