add_action, add_filterで無名関数が使えます。

最近は PHP 5.3 がいろんなレンタルサーバーでもメジャーになってきて、PHP 5.2 は若干レガシーかな。みたいな雰囲気ですね。

そんなPHP 5.3ですが、無名関数が使えます。

[php]
$foo = function( $bar ) {
echo $bar;
};
$foo("ほげ"); //ほげ
[/php]

こんな感じで、書けるようになりました。JavaScriptみたいに書けますね!

前から、create_functionという関数はあったんですが、こんな感じで文字列で渡さないとなので、とても読み書きがしづらいんですよね。匿名関数というやつです。
[php]
$foo = create_function( "$bar", "echo $bar;" );
$foo("ほげ"); //ほげ
[/php]

そんなわけで、add_action, add_filter もこんな風に書けます。

[php]
add_filter( "hoge", function( $param ){
$param = $param + "ほげ";
return $param;
} );

add_action( "hoge", function( $piyo, $fuga ){
echo $piyo + $fuga;
}, 10, 2 );
[/php]

時と場合を選ぶとは思うんですけど、アクションフック・フィルターフックは無名関数を使って書いた方が、関数名の衝突等も発生しないのでいい場合も多いかもしれません。また、チームのメンバーがJavaScript得意って場合もこっちの方が読み易いかも知れません。

とりあえず、オーバーライドや、remove_action, remove_filer が想定される場合は避けましょう。