Php stdClass与匿名函数

Php stdClass与匿名函数,php,stdclass,Php,Stdclass,我可以用匿名函数来实现这一点 $func = function() { return "Hello World"; }; var_dump($func()); 但是,我不能这样做 $namespace->func = function() { return "Hello World"; }; var_dump($namespace->func()); 我会得到这个错误 调用未定义的方法stdClass 到目前为止,我发现的解决方法是使用另一个变量

我可以用匿名函数来实现这一点

 $func = function() {
      return "Hello World";
 };
 var_dump($func());
但是,我不能这样做

$namespace->func = function() {
      return "Hello World";
 };
 var_dump($namespace->func());
我会得到这个错误

调用未定义的方法stdClass

到目前为止,我发现的解决方法是使用另一个变量

$temp = $namespace->func;
var_dump($temp());
有什么方法可以一行完成吗?

您可以使用:


这是因为即使存在作为闭包的属性
func
,PHP也不会检查它是否是闭包并调用它。

一个简单的问题,不使用
new StdClass()可以吗?或者使用它是一种很好的做法?将您的
错误报告
增加到
E|u STRICT | E|u ALL
,您将看到该消息。根据我自己的经验,我可以说遵守严格的标准总是正确的。这样可以避免很多麻烦。您真的需要对象类型吗?如果这只是用于名称空间,那么数组可以处理相同的事情。我只是想发现所有的可能性。谢谢你的建议@Yoshi。这就是为什么我喜欢Stackoverflow,因为我不仅得到了答案,还得到了实用的建议。
// declare $namespace to be conform to strict standards
$namespace = new StdClass();

$namespace->func = function() {
      return "Hello World";
 };
var_dump($namespace->func->__invoke());