PHPでヒアドキュメント内で関数を使う方法を試したら、思ったとおりに動いた。
そして、それを利用したら簡単なテンプレートエンジンみたいなのが出来そうな気がしたので作ってみた。
テンプレートエンジンみたいなやつのソースコードはリポジトリ見てください。
PHPStringTemplateEngine
ヒアドキュメント内で関数を使う方法ってのは
1 <?php
2 $echo = create_function('$val', 'return $val;');
3 $foo = 'foo';
4 echo <<<EOD
5 hoge {$echo(strtoupper($foo))} hoge
6 EOD;
変数に入れた無名関数使うだけ。
簡単w
他にも関数実行するだけなら ${ print “foo”} とか書けるみたいだけど、Notice発生しちゃうのがいかん。
({}の中の関数等の出力を変数名として評価するため、” “で変数評価して、変数が見つからないってなる様子)
PHP5.3以上ならcreate_functionじゃなくても大丈夫
1 <?php
2 $echo = function($val){ return $val; };
3 $foo = 'foo';
4 echo <<<EOD
5 hoge {$echo(strtoupper($foo))} hoge
6 EOD;