2013-07-18 3 views
0

У меня есть вопрос, я не четко понимать, что Затворы использует на объектно-ориентированном программировании, но я сделал что-то вроде этого:Как использовать закрытие как анонимную функцию, например, на Javascript?

<?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; 
}); 
?> 

и эха «Мандалуонга». Я ожидаю, что он вернет массив из Xsample :: $ address, но это не так. Может ли кто-нибудь объяснить это мне?

+0

Обратите внимание на разницу между call_user_func и call_user_func_array. похоже, что вы ожидаете поведения call_user_func – goat

ответ

1

call_user_func_array передает элементы второго аргумента в качестве параметров вызываемой функции. поэтому, если у вашей функции был другой параметр, он будет работать.

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

wow thanks :) на самом деле я понял это уже: D –

Смежные вопросы