phpphp 匿名函数 作用中的use有什么用

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
比如,给的例子中有这么一段代码:
$recv_worker-&onMessage = function($connection, $data)use($recv_worker)
foreach($recv_worker-&sendWorker-&connections as $send_connection)
//$send_connection-&websocketType = "\x82";
$send_connection-&send($data);
这里的:function($connection, $data)use($recv_worker)
为什么function后面可以跟use,而不是直接写函数体{}?
另外,...=function(){} 这种回调函数是怎么实现的?只要js中看到有类似的用法,但在php中以前好像没有看到这种用法。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
那玩意儿叫匿名函数可以先看看官方说明...确实js里常见...这是php5.3后的特性use是用来向匿名函数或者也叫闭包传入外部产量用的
可能暂时题主接触的web框架用这种的地方不多吧...
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
现在很常用的特性了
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。php中的匿名函数什么时候使用?
[问题点数:40分,结帖人qq_]
php中的匿名函数什么时候使用?
[问题点数:40分,结帖人qq_]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2017年7月 PHP大版内专家分月排行榜第三2017年6月 PHP大版内专家分月排行榜第三2017年5月 PHP大版内专家分月排行榜第三2016年10月 PHP大版内专家分月排行榜第三2016年9月 PHP大版内专家分月排行榜第三2015年10月 PHP大版内专家分月排行榜第三2014年12月 PHP大版内专家分月排行榜第三2014年9月 PHP大版内专家分月排行榜第三
2017年1月 总版技术专家分月排行榜第三
2017年2月 PHP大版内专家分月排行榜第一2017年1月 PHP大版内专家分月排行榜第一
2017年1月 总版技术专家分月排行榜第三
2017年2月 PHP大版内专家分月排行榜第一2017年1月 PHP大版内专家分月排行榜第一
匿名用户不能发表回复!|在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
php的匿名函数里面直接用global和用use传递外部空间的变量有啥区别?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
闭包函数use的变量是不会影响全局变量的。
$global = $global2= 'hello';
$fun = function() use ($global){
$global.=' world!';
global $global2;
$global2.=' world!';
echo $global."\n";
echo $global2;
//hello world!
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。从PHP 5.3开始新增了匿名函数(Anonymous functions),也叫闭包函数(closures),关键字 use 同时也在匿名函数中。
先看一下匿名函数的示例,作为回调函数的参数:
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// 输出 helloWorld
匿名函数也可以作为变量的值来使用。把一个匿名函数赋值给一个变量的方式和普通变量赋值的语法是一样的,最后也需要加上分号。
$greet = function($name)
printf(&Hello %s\r\n&, $name);
$greet('World');
$greet('PHP');
匿名函数不会自动从父作用域中继承变量,注意从父作用域继承变量和使用全局变量是不同的。如果父作用域本身就是全局的 情况下就不存在从父作用域继承变量了,如果不是全局的话,想要使用父作用域中的变量,必须在声明匿名函数时候使用use换键字 来定义继承父作用域的变量。
// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。
// 其中有一个方法用来计算购物车中所有商品的总价格。该方法使用了一个closure作为回调函数。
class Cart
const PRICE_BUTTER
const PRICE_MILK
const PRICE_EGGS
$products = array();
public function add($product, $quantity)
$this-&products[$product] = $quantity;
public function getQuantity($product)
return isset($this-&products[$product]) ? $this-&products[$product] :
public function getTotal($tax)
$total = 0.00;
$callback =
function ($quantity, $product) use ($tax, &$total)
$pricePerItem = constant(__CLASS__ . &::PRICE_& .
strtoupper($product));
$total += ($pricePerItem * $quantity) * ($tax + 1.0);
array_walk($this-&products, $callback);
return round($total, 2);;
$my_cart = new Cart;
// 往购物车里添加条目
$my_cart-&add('butter', 1);
$my_cart-&add('milk', 3);
$my_cart-&add('eggs', 6);
// 打出出总价格,其中有 5% 的销售税.
print $my_cart-&getTotal(0.05) . &\n&;
// The result is 54.29
匿名函数(闭包函数)是一个独立的命名空间,你不能访问这个命名空间之外的变量,使用use关键字可以把外部的变量 带到这个命名空间中。可以通过使用 & 符号来声明指针变量。
VIA:http://www.songlin51.com/archives/1213.html在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
php的匿名函数里面直接用global和用use传递外部空间的变量有啥区别?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
闭包函数use的变量是不会影响全局变量的。
$global = $global2= 'hello';
$fun = function() use ($global){
$global.=' world!';
global $global2;
$global2.=' world!';
echo $global."\n";
echo $global2;
//hello world!
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 php 匿名函数 作用 的文章

 

随机推荐