2013-01-10 13 views
0

多年來,我一直在嘗試用PHP編寫像這樣的黑客功能代碼咬子彈:回調類型在array_map()方面是指什麼?

class Foo { 
    function addOne($wu) { 
     return $wu + 1; 
    } 
    function getBiggerThings(array $things) { 
     $that = $this; 
     return array_map(function ($i) use ($that) { 
      return $that->addOne($i); 
     }, $things); 
} 

今天有同事指出,我可以寫:

return array_map(array($this, 'addOne'), $things); 

我不能在php.net上找到關於此的任何文檔。我是否錯誤地閱讀了callback type documentation

+0

改爲在這裏:http://php.net/language.types.callable - 它的所有文件。 – hakre

回答

4

是記錄我想強調從commented PHP docs以下:

一個實例化的對象的方法,作爲含有對象在索引0處,並且所述方法的陣列被傳遞名稱在索引1.

這實際上是因爲相當長的時間,所以在PHP 5.3之前說,它允許你匿名函數「解決方法」。

+0

這是一個很好的例子,說明你爲什麼不應該用英文被動的情況。我把它理解爲「這是PHP爲你做的」。 – kojiro

+0

你是指手冊中的句子? – hakre

+0

是的,這就是我的意思。 – kojiro

4
+0

不是downvoting,因爲這是我的問題,我很欣賞答案,但[僅限鏈接回答](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere -really-好答案)。 – kojiro

+0

@kojiro好的,你問了一個鏈接,不是爲了一個例子或文檔的解釋... –

+0

我問*它在哪裏被記錄*,這是不一樣的要求鏈接。事實上,我已經閱讀過那篇文章,並沒有理解那裏寫的答案(因爲我在@ hakre的回答中描述了這個原因)。他花了一個實際的句子,讓我意識到這句話正在描述我所問的問題。 – kojiro