阅读更多

8顶
0踩

编程语言

原创新闻 PHP 5.3 将加入闭包语法

2009-02-23 11:46 by 副主编 ouspec 评论(10) 有7157人浏览
PHP
PHP 5.3 将加入闭包语法,也就是匿名函数,允许开发者申明行内函数和在变量中保存。虽然这个语法和JavaScript的闭包相比有点怪异,但是对于PHP语言来说,这是一个良好的补充。

比如你现在就可以这样使用:

$closure = function($param) { echo $param; };
 
//This one takes value of someVar and "stores" it in the closure's scope even if
//we later change the value of someVar outside it. We assume that $somerVar is defined before this
$closure2 = function($param) use ($someVar) { echo $param . ' ' . $someVar; };


比如在输出HTML中闭包很有用:

function item_list(array $items, $formatter = null) {
  //create the default formatter
  if($formatter == null) {
    $formatter = function($row) {
      return '<p>' . $row . '</p>';
    };
  }
 
  $html = '<h2>Listing:</h2>';
  foreach($items as $item) {
    $html .= $formatter($item);
  }
 
  return $html;
}
8
0
评论 共 10 条 请登录后发表评论
10 楼 greenfeel 2010-11-04 00:20
7楼应该问问dualface是谁。
9 楼 xieye 2009-11-07 10:16
群众纷纷表示影响不大
8 楼 achun 2009-11-06 18:10
个人认为这是php错误的方向
PHP和java有完全不同的需求群体
闭包实在不是PHP现有广大群体的需求
像这种底层的开发,还不如把功夫下到php的执行效率上
如果PHP这样搞,怎么可能会有其他语言的优势搞呢?
PHP需要扬长避短呀!
不要落入残酷的竞争中!
试想本来PHP不需要在这些高级方面和其他语言比较,可是一旦引入了,又被别的语言比的找不着,那岂不是很打击新的PHP开发者
此举严重失败
7 楼 EdwardWorld 2009-04-20 23:53
dualface 写道

前三位的s13评论不奇怪,估计用都没用过 php

我用PHP2年,我想你也不会是PHP老手。
6 楼 smilerain 2009-03-26 17:01
第一次看到 变量前边都要加个$ 的时候就感觉是个怪了。
现在已经是见怪不怪了。 --因为都不看
5 楼 dualface 2009-02-24 21:04
前三位的s13评论不奇怪,估计用都没用过 php
4 楼 pdreamer 2009-02-23 18:03
傻X的评论
3 楼 whaosoft 2009-02-23 13:48
既然本身就是怪胎,就让它一直怪下去吧. 
阿嘎嘎嘎!!!!!!!!
2 楼 EdwardWorld 2009-02-23 13:40
现在PHP的优势越来越小了。
1 楼 aninfeel 2009-02-23 13:23
既然本身就是怪胎,就让它一直怪下去吧.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • php 5.3新增的闭包语法详解

    php 5.3新增的闭包语法详解代码如下: &lt;?php /** * author: selfimpr * mail: lgg860911@yahoo.com.cn * blog: http://blog.csdn.net/lgg201 * 下面提到的代码在PHP5.3以上版本运行通过. */function callback($...

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

    /**   * author: gujing ... ... * 下面提到的代码在PHP5.3以上版本运行通过.   */  function callback($callback) {   $callback();  }  //输出: This is a anonymous fu

  • php 5.3新增的闭包语法介绍function

    解释的很详细,分享一下。 1 &lt;?php 2 /** 3 * author: selfimpr 4 * mail: lgg860911@yahoo.com.cn 5 * blog: ... 6 * 下面提到的代码在PHP5.3以上版本运行通过. 7 */ 8 function c...

  • 如何实际使用PHP5.3闭包语法特性

    Closures are a new language-level feature that has been added to php 5.3, along with namespaces, late static binding, and a slew of other new features, patches, and updates. If you’re like me, you ...

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

    From : ... php 5.3新增的闭包语法介绍function() use() {} Demo1 function callback($callback) { $callback(); } callback(function() { print &quot;This is a anonymous ...

  • PHP4用户手册:函数->CRUL->curl_init

    curl_init(PHP 4 >= 4.0.2)curl_init -- 初始化一个CURL会话 描述 int curl_init ([string url]) curl_init()函数将初始化一个新的会话,返回一个CURL句柄供curl_setopt(), curl_exec(),和 curl_close() 函数使用。如果可选参数被提供,那么CURLOP

  • PHP4用户手册:函数->CURL->curl_setopt

    curl_setopt(PHP 4 >= 4.0.2)curl_setopt -- 为CURL调用设置一个选项 描述 bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的

  • PHP4用户手册:函数->fseek

    fseek(PHP 3, PHP 4 >= 4.0.0)fseek -- 定位一个文件的指针描述int fseek (int fp, int offset [, int whence])为这个文件的引用fp设置文件指示器。这个新的位置,是从文件开始以字节为标准由offset指定的,或由 whence指定的位置开始。 whence的值见下: S

  • PHP4用户手册:函数->trim

    trim(PHP 3, PHP 4 >= 4.0.0)trim -- 去除一个字符串开始和结尾的空白 描述string trim (string str [, string charlist])注意:第二个参数用在PHP 4.1.0 这个函数返回str字符串被去除首尾空白后的新字符串。不带第二个参数trim() 将去除下列字符:

  • PHP4用户手册:函数->flock

    flock(PHP 3>= 3.0.7, PHP 4 >= 4.0.0)flock -- 锁定文件描述bool flock (int fp, int operation [, int wouldblock])PHP 支持在访问文件时完全的锁定文件(这意味着所有的访问程序不得不使用相同的锁定方式,或者它不工作)。 flock() 运行在打开的文件指针fp之上。

  • PHP4用户手册:函数->usleep

    usleep(PHP 3, PHP 4 >= 4.0.0)usleep -- 暂停执行多少毫秒描述void usleep (int micro_seconds)usleep() 函数暂停程序执行由 micro_seconds指定的毫秒数 参见 sleep(). 注意:这个函数不能工作在 Windows 操作系统中。

  • PHP4用户手册:函数->fopen

    fopen(PHP 3, PHP 4 >= 4.0.0)fopen -- 打开文件或URL描述int fopen (string filename, string mode [, int use_include_path])如果filename 以"http://"开始 (大小写不敏感), 则本函数用HTTP 1.0连接打开指定的服务器,这个页面被使用HTTP 

  • PHP4用户手册:函数->CURL->curl_exec

    curl_exec(PHP 4 >= 4.0.2)curl_exec -- 执行一个CURL会话 描述 bool curl_exec (int ch) 在你初始化一个CURL会话,及为这个会话设置了所有的选项后,这个函数将被调用。它的目的仅仅是执行预先确定的CURL会话(通过给定的ch参数)。

  • PHP4用户手册:函数->CURL

    XI. CURL, 客户 URL 库函数PHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展),

  • PHP4用户手册:流程控制->require

    require()require() 语句用它指定的文件代替它自己,这很像C中的预处理#include 的功能。 如果在PHP中"URL fopen wrappers"项是打开的(这是默认的配置),你可以在require()中使用URL代替本地路径。更多的信息参见Remote files和fopen()。 一个重要的提示是:当一个文件被include()或req

  • PHP4用户手册:函数->fwrite

    fwrite(PHP 3, PHP 4 >= 4.0.0)fwrite -- 二进制文件写入描述int fwrite (int fp, string string [, int length])fwrite() 写入字符串string 的内容到由fp指定的文件流中。如果length 给出,将写完length 指定的字节后结束。 注意,如果length 参数给

  • PHP4用户手册:常量

    第8章. 常量目录列表 语法 固定常量一个常量是一个简单值的标识符(名字)。作为名字,这个值在脚本的执行期间是不可以改变的(魔术的常量__FILE__ 和 __LINE__ 除外)。 缺省一个常量是大小写敏感的。习惯上常量通常是大写的。 在PHP中常量的命名与变量标识符的命名一致。一个有效的常量名是以字母或下划线开始,后面可以是字母符号,数字,或下划线。做正则表达式表示

  • PHP4用户手册:变量->基础

    第7章. 变量目录列表 基础 固定变量 变量作用域 变量的变量 PHP外的变量基础变量的描述:在PHP中是一个美元符后跟随变量的名字。变量名是大小写敏感的。 变量名的命名与PHP中其他标签的一致。一个有效变量名是以一个字线或下划线开始的,随后是一些字线,数字或下划线。当作正则表达式看待,它将是这样的:[a-zA-Z_/x7f-/xff][a-z

  • PHP4用户手册:流程控制->while

    whilewhile 循环是PHP循环中的简单类型。它的行为刚好像C语言中的一样。以下是如基本的while语句: while (expr) statement这个while 语句的意义是很简单的。它告诉 PHP 只要while表达式的值为真,就去重复执行 statement(s) 。在每次循环的开始都去检查表达式的值,如果在执行期间这个表

  • PHP4用户手册:函数->count

    count(PHP 3, PHP 4 >= 4.0.0)count -- 计算变量中元素的个数描述int count (mixed var)返回一个变量var元素的个数 , 最有代表性的是数组 (其他类型只有一个元素)。 如果这个变量var 不是一个数组,将返回1 (除外:count(NULL) 相当于 0). 警

Global site tag (gtag.js) - Google Analytics