Top > Blog > 2011-12-26
Last-modified: Mon, 09 Jan 2012 18:54:01 JST

PHP クロージャ

PHP5.3から追加されたクロージャ(無名関数)。コールバック関数のような高等な使い方には至らず、単にローカル関数みたいなイメージで使ってきたけど、ダブルクォーテーションを使った文字列の中でも、(関数である)変数の中身が展開がされて使えるみたいだ。

例えば、

$func = function ($x) { return $x . $x; };
echo "result: {$func('a')}";

みたいな(出力される文字列は、"result: aa")。

状況に応じていろんな書き方ができるんだろうけど、ある状況ではこの方法が簡潔にコードを書けるのではないかと想像している。

適切な例なのか検討不足だけど、パラメータに応じてstyle属性を変えながら類似するタグを多数記述する場合などで、これまで事前に関数の結果を文字列として別の変数に代入してきたが、上記の書き方を使ってすっきりと表現できるのではないかと思う。まずは何度か使ってみようと思う。


2012/01/09 追記

普通にcreate_function()を使った無名関数でも上記の文字列内での変数展開はされるみたい*1。もうPHP5.3以降しか使ってないから確認するつもりもないけど。




コメント

適当に書いて頂いて構いません。スパム対策があるので、書き込めない場合があります。また、ボタンを押した後にしばらく時間がかかります。

新規コメント(ラジオボタンで親コメント選択可)
お名前

現在、コメントはありません