【发布时间】:2015-05-31 19:47:04
【问题描述】:
我刚开始使用匿名函数,即闭包,我遇到了一个问题。我正在使用闭包在 Project 类中调用 静态函数,以返回另一个 Application 类中的值。以下是我的问题的简化版本
class Project{
public function __construct(){
self::ProcessParams(function() {
return Application::return_param('1');
}, 'param2', 'param3');
}
}
public static function ProcessParams($param1, $param2, $param3){
var_dump($param1);
}
}
我的问题是 ProcessParams 函数中的 var_dump() 不返回请求的值,而是将整个 Project 类插入到 $param1
object(Closure)#90 (1) { ["this"]=> object(Project)#34 (3) { ..... }
我做错了什么??
谢谢
【问题讨论】:
-
你正在倾倒闭包,而不是闭包返回的东西。
-
你传递了闭包,所以 param1 变得可调用,你必须将它作为标准函数调用 -
$param1()- php.net/manual/en/language.types.callable.php
标签: php closures static-methods anonymous-function