怎么做$ class :: function($ data);

时间:2010-07-19 06:11:20

标签: php oop

我有几个具有相同功能的类,在不同的时间调用,具体取决于不同的变量,

所以我需要的是像

$class = 'test';
$return = $class::do_something();

但我得到Parse错误:解析错误,意外t_paamayim_nekudotayim。

从它的外观来看意味着意外的::。

<小时/> 更新:
另外,为什么直接这样做可以在我的本地主机上工作,但不能在我的prod服务器上工作?是否有php_ini设置?

1 个答案:

答案 0 :(得分:4)

您需要使用一个名为call_user_func的特殊函数来动态调用类函数。

像这样:

call_user_func($class . '::do_something');

对于带参数的函数,您需要使用call_user_func_array

call_user_func_array($class . '::do_something', array($data));

要回答你的第二个问题,只能在PHP 5.3.0中添加在变量类名上调用静态方法的能力,这就是为什么你的代码在一台服务器上工作而在另一台服务器上抛出错误的原因