문제

I can do this with anonymous function

 $func = function() {
      return "Hello World";
 };
 var_dump($func());

However, I cannot do this

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

I will get this error

Call to undefined method stdClass

The workaround that I have discovered so far is to use another variable

$temp = $namespace->func;
var_dump($temp());

Is there a way that I can do it in one line?

도움이 되었습니까?

해결책

You can use __invoke() :

// declare $namespace to be conform to strict standards
$namespace = new StdClass();

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

That's because even if a property func exists which is a closure, PHP will not check if it is a closure and call it.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top