PHP函数可以返回对静态对象的引用吗?

时间:2013-10-01 20:42:09

标签: php static

说我有一个静态对象:

class everything{
    public static function must(){
        return "go!";
    }
}

当我这样做时:

echo everything::must();

我收到回复:

go!

预期的行为是什么。


现在,出于我自己的原因(遗留代码支持),我希望能够通过函数调用的返回来调用该静态对象,其语法类似于:

print accessorFunction()::must(); // Or something as close to it as possible

function accessorFunction(){
    returns (reference to)everything; // Or something as close to it as possible
}

我希望我的问题足够明确。

感谢。

4 个答案:

答案 0 :(得分:1)

我不确定这是否是您正在寻找的那种参考,但您可以随时这样做:

print call_user_func( array( accessorFunction(), "must"));

function accessorFunction(){
    return 'everything';
}

答案 1 :(得分:1)

您还可以使用变量类:

function accessorFunction() {
    return new everything();
}

$class = accessorFunction();
echo $class::must(); // go!

答案 2 :(得分:1)

无法以这种方式调用静态方法:

print accessorFunction()::must();

但可能

$class_name = accessorFunction();
print $class_name::must();

文档 - http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php

答案 3 :(得分:1)

我认为更清洁的选择是混合@nickb和@GeorgeBrighton解决方案:

function accessorFunction() {
    return 'everything';
}

$class = accessorFunction();
echo $class::must(); // prints go!