PHPのヒアドキュメント内で関数を使う。計算もしたい。

ヒアドキュメント内で関数を使いたいときとかあるよね

…あるある。

とっても。

で、その方法は…。

こんなんでました。

■メンバ関数を使用する

class Foo {
  function Kansuu($str){
    return htmlspecialchars($str, ENT_QUOTES);
  }
}
 
$foo = new Foo();
$str = "<'testtest'>";
print <<<EOF
  <p>{$foo->Kansuu($str)}</p>
EOF;

この方法は、結構とっつきにくいかも。
大規模サイトでClassファイルを別にしていろんなところで使う…とかいう時にはやっておくべきかもしれんが。
というより
「ヒアドキュメント内で関数を使う」
ってのとはちょっと違う気がする。
メンバ関数の中で関数処理して返すとか、なんだろう…なんか違うようなそうでもないような。

■可変変数を使う方法

$number_format = "number_format";
$price = 123456;
echo <<<EOF
<p>{$number_format($product->price)}円</p>
EOF;

こいつは直感的でわかりやすいかも。
たくさん価格表示するような時とか、やっておいたほうがいいよね。
「nl2br()」とかもやっておきたい。

関数が使えるってこたァ、計算も出来るんじゃね?

…出来た(゚∀゚ )

Σ(゚д゚lll)…マジ?

$number_format = "number_format";
$price = 3900;
echo <<<EOF
<select name="quantity"> 
<option value="1">1個:&yen;{$number_format($price)} (税込)</option> 
<option value="2">2個:&yen;{$number_format(($price)*2)} (税込)</option> 
<option value="3">3個:&yen;{$number_format(($price)*3)} (税込)</option> 
<option value="4">4個:&yen;{$number_format(($price)*4)} (税込)</option> 
<option value="5">5個:&yen;{$number_format(($price)*5)} (税込)</option> 
</select> 
EOF;

Baidu IME_2013-3-17_0-4-24

いや、ホントに出来るとは思わなかった。

ますますSmarty(´・ω・)イラネ