taoCMS是基于php+sqlite/mysql的国内最小(100Kb左右)的功能完善、开源免费的CMS管理系统

php 5.3新增的闭包语法介绍function() use() {}

2010-06-04
  1. <?php  
  2. /** 
  3.  * author: selfimpr 
  4.  * mail: lgg860911@yahoo.com.cn 
  5.  * blog: http://blog.csdn.net/lgg201 
  6.  * 下面提到的代码在PHP5.3以上版本运行通过. 
  7.  */  
  8. function callback($callback) {  
  9.     $callback();  
  10. }  
  11. //输出: This is a anonymous function.<br />   
  12. //这里是直接定义一个匿名函数进行传递, 在以往的版本中, 这是不可用的.  
  13. //现在, 这种语法非常舒服, 和javascript语法基本一致, 之所以说基本呢, 需要继续向下看  
  14. //结论: 一个舒服的语法必然会受欢迎的.  
  15. callback(function() {  
  16.     print "This is a anonymous function.<br /> ";  
  17. });  
  18. //输出: This is a closure use string value, msg is: Hello, everyone.<br />   
  19. //这里首先定义了一个闭包, 这次户口本上有名字了...  
  20. //use, 一个新鲜的家伙...  
  21. //众所周知, 闭包: 内部函数使用了外部函数中定义的变量.  
  22. //在PHP新开放的闭包语法中, 我们就是用use来使用闭包外部定义的变量的.  
  23. //这里我们使用了外部变量$msg, 定义完之后, 又对其值进行了改变, 闭包被执行后输出的是原始值  
  24. //结论: 以传值方式传递的基础类型参数, 闭包use的值在闭包创建是就确定了.  
  25. $msg = "Hello, everyone";  
  26. $callback = function () use ($msg) {  
  27.     print "This is a closure use string value, msg is: $msg. <br /> ";  
  28. };  
  29. $msg = "Hello, everybody";  
  30. callback($callback);  
  31. //输出: This is a closure use string value lazy bind, msg is: Hello, everybody.<br />   
  32. //换一种引用方式, 我们使用引用的方式来use  
  33. //可以发现这次输出是闭包定义后的值...  
  34. //这个其实不难理解, 我们以引用方式use, 那闭包use的是$msg这个变量的地址  
  35. //当后面对$msg这个地址上的值进行了改变之后, 闭包内再输出这个地址的值时, 自然改变了.  
  36. $msg = 

类别:技术文章 | 阅读:232229 | 评论:0 | 标签:

想收藏或者和大家分享这篇好文章→

“php 5.3新增的闭包语法介绍function() use() {}”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

taoCMS发布taoCMS 3.0.2(最后更新21年03月15日),请大家速速升级,欢迎大家试用和提出您宝贵的意见建议。

捐助与联系

☟请使用新浪微博联系我☟

☟在github上follow我☟

标签云