2012-05-14 17 views
12

引数がPHPクロージャであるときにデフォルトの引数値を指定することは可能でしょうか? Like:オプションの関数引数としてのPHPクロージャ

public function getCollection($filter = function($e) { return $e; }) 
{ 
    // Stuff 
} 

何かが分からない(別の構文かもしれません)か、それとも全くできませんか?もちろん、私は私が行うことができます知っている:

public function getCollection($filter = null) 
{ 
    $filter = is_callable($filter) ? $filter : function($e) { return $e; }; 
    // Stuff 
} 

注:私は上記のコードをテストしていない)

答えて

14

Default argumentsは唯一の「スカラ引数」、配列、またはNULLにすることができます。

"scalar values"は、数字、文字列、ブール値です。

関数をデフォルトの引数にする場合は、第2の方法を使用する必要があります。第1の方法は構文エラーです。

+0

わかりました。だから私の質問は役に立たない。とにかくありがとう。 – gremo

+1

@Gremo:それは役に立たない質問ではありません、それは良い質問です。他の人が同じことを思っているかもしれません:-) –

+1

合意。私はPHPの開発者ですが、これはまだ興味深いものです。 – Madbreaks

関連する問題