如何在PHP中引用变量类的静态方法?

时间:2010-03-07 21:24:34

标签: php static reference variables methods

我正在编写一个工厂类,它应该能够返回多种不同类型的单例实例,具体取决于给定的参数。该方法看起来像这样,但我引用单例的静态方法的方式显然是错误的:

public function getService($singletonClassName) {
    return $singletonClassName::getInstance();
}

这样的引用的正确语法在PHP中会是什么样的?

2 个答案:

答案 0 :(得分:1)

你不能在PHP<中使用那种语法。 5.3:这是PHP 5.3的新功能之一

使用PHP 5.2的几种可能性是:

  • 如果您知道,请使用该课程的名称
  • 或使用call_user_func
  • 之类的内容


在第一种情况下,它将如下:

ClassName::getInstance()

而且,在第二种情况下,你会使用类似的东西:

call_user_func($singletonClassName .'::getInstance');

根据call_user_func的文档,这应该适用于PHP> = 5.2.3

或者您可以使用:

call_user_func(array($singletonClassName, 'getInstance'));

答案 1 :(得分:0)

您只需使用班级名称

public function getService($singletonClassName) {
    return SingletonClassName::getInstance();
}

或者,如果$singleClassName是包含classname的变量,则使用

public function getService($singletonClassName) {
    return call_user_func( array($singletonClassName, 'getInstance') );
}

从5.2.3开始,您也可以

call_user_func($singletonClassName .'::getInstance'); // As of 5.2.3