0

何年もの間、私は次のようなハックでPHPで関数型コードを書き込もうとしている弾丸を噛んでいます。

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でこれに関するドキュメントを見つけることができません。コールバックタイプのドキュメントを間違って読んでいますか?

4

2 に答える 2

4

これは、Callableタイプに関するドキュメントに記載されています

于 2013-01-10T21:03:05.097 に答える
4

コメントされたPHPドキュメントから次のことを強調したいと思います。

インスタンス化されたオブジェクトのメソッドは、インデックス0のオブジェクトとインデックス1のメソッド名を含む配列として渡されます。

これは実際にはかなり長い間、つまり無名関数の「回避策」を可能にしたPHP5.3より前のことです。

于 2013-01-10T21:03:28.713 に答える