PHP の無名関数が便利なので今すぐ使ったらいいと思うよ、WordPress ならフックとかでね(PHP 5.3.0以降

PHP の世代交代が進んでますね!

いい加減 PHP 5.2 に対応しなくてもいい流れになって欲しいものですが、レンタルサーバーによっては未だ 5.2 のところもあるとかないとか。

5.2 はすっぱり諦めて、無名関数を使いましょう。

 

無名関数とは

参考&引用: PHP: 無名関数 – Manual

無名関数はクロージャとも呼ばれ、 関数名を指定せずに関数を作成できるようにするものです。
コールバック パラメータとして使う際に便利ですが、用途はそれにとどまりません。

他の言語なら当たり前のように使えていたのがようやく。

関数の名前をいちいち付けずに実行できる、ってやつです。

PHP 5.3 以上で対応。

 

無名関数、どういうときに使うか

PHP マニュアルの説明通り、コールバックで使うことが多いです。

その他にも変数に代入できたり。

// $wp に無名関数を代入
$wp = function ( $ver ) {
	printf( 'WordPress %s', $ver );
};
// 代入した関数が実行される。
$wp( '3.9' );

// 実行結果 → WordPress 3.9

 

無名関数 x WordPress

そんな無名関数、もちろん WordPress でも活躍します。

ぼくが WordPress 開発時に無名関数使うのは主としてアクションフック。

add_filter や add_action ですね。

ちょっとやってみましょう。

 

すごく簡単な WordPress のフック例

the_title で出力される関数を ★ で囲むだけのフックを作成。

よく見る形のフックですね。

/**
 * the_title 出力を★で囲むだけのフック
 *
 * @param $title
 *
 * @return string
 */
function add_text_the_title( $title ) {
	return '★' . $title . '★';
}
add_filter( 'the_title', 'add_text_the_title' );

これを無名関数で置き換えてやります。

 

無名関数を使った WordPress のフック例

関数名はいらないので取り除いてやり、add_filter 2つ目の引数に無名関数を移動。

/**
 * the_title 出力を★で囲むだけのフック(無名関数
 *
 * @param $title
 *
 * @return string
 */
add_filter( 'the_title', function ( $title ) {
	return '★' . $title . '★';
} );

簡単ですね!

 

無名関数になぜ置き換えるのか

コールバックや WordPress のアクションフックで使う関数は、基本的に他で使うことはありません

無駄な関数名が増えると開発時に関数名が多すぎて混乱したり、開発環境での使いもしない関数名コードヒントが出たりしますよね。

そういった無駄がなくなります。

使わない理由がありませんね!

 

ホホまとめ

そろそろ PHP 5.2 対応は切り捨てていこうと思っているので、そんなタイミングで書いてみました。

さして新しくもない知識ですけれども、誰かのために少しでもなれば。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“PHP の無名関数が便利なので今すぐ使ったらいいと思うよ、WordPress ならフックとかでね(PHP 5.3.0以降” への2件のフィードバック

  1. ankou1060 Avatar

    なるほど、このクロージャの使い方いいかも。 / PHP の無名関数が便利なので今すぐ使ったらいいと思うよ、WordPress ならフックとかでね(PHP 5.3.0以降 @hayashikejinanさんから

mayo1950 にコメントするコメントをキャンセル

%d人のブロガーが「いいね」をつけました。