说我有一个静态对象:
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
}
我希望我的问题足够明确。
感谢。
答案 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!