是否有可能在没有 的情况下调用它们而不像我们在 中那样进行标识?例如
不在PHP 5.x中;除非你的方法将回调作为参数来计算它。例如:
$square = array_map(function ($v) { return $v*$v; }, $array);
什么是正确的使用方法使用 结构的同时定义匿名 功能
的use
关键字表示,从当前词法范围的变量应该导入到关闭。你甚至可以通过引用传递和改变传递的变量,例如:
$total = 0;
array_walk($array, function ($v) use (&$total) { $total += $v; });
// $total is now the sum of elements in $array
什么是匿名 功能的公共方法的现状与 无障碍私有财产?在类中定义的
闭包可以完全访问其所有属性和方法,包括无需在PHP 5.4导入$this
通过关键字use
私立学校:
// this works fine in PHP 5.4
$anon_func =
function($my_param) {
$thing = $my_param + $this->object_property;
echo('anonymous function');
};
注意,对于一些奇怪的原因支持$this
关闭was removed in PHP 5.3。在这个版本中,您可以解决此限制使用类似:
// a workaround for PHP 5.3
$temp = $this;
$anon_func =
function($my_param) use ($temp) {
$thing = $my_param + $temp->object_property;
echo('anonymous function');
};
但是,这可让您使用唯一的公共成员,试图访问私有成员仍将给你一个错误。
另请注意,试图导入$this
(通过use
),无论PHP版本如何,都会导致致命错误Cannot use $this as lexical variable
。
闭包是不具有完全的代名词匿名函数,尽管PHP中的匿名函数的类型为“Closure”。就这样你知道。 – BoltClock 2010-08-31 02:21:41
当您尝试第二个代码示例时,确切的错误是什么? '错误'有点不明确。 – BoltClock 2010-08-31 02:31:40
无法使用$ this作为词法变量 – 2010-08-31 02:39:30