如何像在Javascript上一样使用闭包作为匿名函数


How to use Closure as an Anonymous Function like on Javascript?

我有一个问题,我不清楚闭包在OOP上使用了什么,但我做了这样的事情:

<?php /** * */ 
class Xsample {
public static $name; 
public static $address = array("Mandaluyong", "City"); 
public static function setName ($name) {
self::$name = $name; 
} 
public static function getName() {
echo self::$name; 
} 
public static function sub ($func) {
return call_user_func_array($func, self::$address); 
} 
} 
Xsample::setName("Eric"); 
Xsample::sub(function ($address) {
echo $address; 
}); 
?>

它呼应了"Mandaluyong"。我预计它会从Xsample::$address返回一个数组,但它没有。有人能给我解释一下吗?

call_user_func_array将第二个参数的元素作为参数传递给被调用的函数。因此,如果你的函数有另一个参数,它就会起作用。

Xsample::sub(function ($address, $address2) {
echo $address; 
echo $address2; 
});