<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>[PHP] PHP 5.3 的 Lambda 和 closure ？</title>
<link>http://blog.roodo.com/jaceju/archives/6541789.html/</link>
<description><![CDATA[這篇也 Lag....這是前陣子的消息。
PHP 5.3 將有可能會有 Lambda (黏巴達？) 和 closure ，來源為 Request for Comments: Lambda functions and closures 這篇文章，所以以後 call_user_func 就不必再用蹩腳的字串來做為函式內容了。而且這是不是也表示 PHP 不但向 Java 靠攏，也開始向 JavaScript 靠攏了？
註：所以 Mark 剛剛跟我說 PHP 快變四不像了。
Lambda 語法如下：
function &amp; (parameters) use (lexical vars) { body }
範例：
$lambda = function () { echo &quot;Hello World!\n&quot;; };
可以這樣用：
$lambda ();
call_user_func($lambda);
call_user_func_array($lambda, array());
所以 call_user_func 系列函式就可以用 Lambda 了。 
進階的 Lambda 範例：
function replace_spaces ($text) {
    $replacement = function ($matches) {
        return str_replace ($matches[1], ' ', '&amp;nbsp;').' ';
    };
    return preg_replace_callback ('/( +) /', $replacement, $text);
}
Closure 語法：
function (normal parameters) use ($var1, $var2, &amp;$refvar) {}
範例：
function replace_in_array ($search, $replacement, $array) {
    $map = function ($text) use ($search, $replacement) {
        if (strpos ($text, $search) &gt; 50) {
            return str_replace($search, $replacement, $text);
        } else {
            return $text;
        }
    };
    return array_map($map, $array);
}
可以看到原來可以用 callback 的函式，應該都能接受 closure 。 
其他就請參考來源文章囉。
相關文章 

php 5.3: notes about closures and lambda functions 
php 5.3将提供改进的Lambda函数 

]]>
	</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/jaceju/archives/6541789-comment.xml" rel="self" type="application/rss+xml" />
<item>
	<title>回應：[PHP] PHP 5.3 的 Lambda 和 closure ？</title>
	<description><![CDATA[@丫琪：

PHP 已經到 6.0 了，不過目前 5.3 以後的版本都還在開發中，建議使用 5.2.6 以前的版本。

@No4：

其實之後 Xdebug 應該會因應這些特色作改良，因此 Debug 上應該會還好。至於效率，我不是很確定。而好處你可以參考 Ruby 或 JavaScript 上，利用這些特色做出來的成品。]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/6541789.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/6541789.html#comment-16914937</guid>
		<category>文章回應</category>
	<pubDate>Wed, 23 Jul 2008 14:13:12 +0800</pubDate>
</item>
<item>
	<title>回應：[PHP] PHP 5.3 的 Lambda 和 closure ？</title>
	<description><![CDATA[這樣寫法的好處是什麼呢?
效率會快點嗎?

我很怕這種寫法, 除錯時會越來越難.]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/6541789.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/6541789.html#comment-16914309</guid>
	<author>reg.no4@gmail.com(No4)</author>	<category>文章回應</category>
	<pubDate>Wed, 23 Jul 2008 13:21:20 +0800</pubDate>
</item>
<item>
	<title>回應：[PHP] PHP 5.3 的 Lambda 和 closure ？</title>
	<description><![CDATA[有這麼新的版本喔！我還不知道說！
紀錄起來！]]>
	</description>
	<link>http://blog.roodo.com/jaceju/archives/6541789.html</link>
	<guid>http://blog.roodo.com/jaceju/archives/6541789.html#comment-16912797</guid>
	<author>2notebook@yahoo.com.tw(ㄚ琪)</author>	<category>文章回應</category>
	<pubDate>Wed, 23 Jul 2008 08:55:56 +0800</pubDate>
</item>
</channel>
</rss>