2013-10-01 74 views
4

说我有一个静态对象:PHP函数可以返回对静态对象的引用吗?

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 
} 

我希望我已经明确了这个问题。

谢谢。

+1

确保你知道类和对象之间的区别 - 你似乎是交替使用它们。值得注意的是,PHP没有静态类的概念。 –

回答

1

我不知道这是否是参考你要找的那种,但你总是可以这样做:

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

function accessorFunction(){ 
    return 'everything'; 
} 
1

您还可以使用变量类:

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

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

该解决方案实例化对象,如果可能的话我想保持静态。 –

+0

够公平的。严格地说,不应该在对象上调用静态方法 - 它应该使用包含静态方法的类。 –

1

我觉得更清洁的选择将是混合@nickb和@GeorgeBrighton解决方案:

function accessorFunction() { 
    return 'everything'; 
} 

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