WEBシステム開発・デザイン制作などすべての作業を一貫してご提供しております。(大阪・東京近辺)

WEBシステム開発大阪/PHPの文字列(DB/変数などの値)をPHPコードとして実行

最近どの開発言語もマンネリ化しているのだろうか?

一時に比べれば盛り上がりに欠けていると感じるのは自分だけなんだろうか。

次から次へとリリースされるフレームワークに

一体どれだけの価値があるのだろうか?っと思っていたりしてましたね。

フレームワークを使わずに、その言語特有の関数で

お宝的な機能を見つけていくのが好きな今日この頃です!

たまーに独自のテンプレート処理などを実装する場合

置換、置換でゴリゴリ作成すればOKなんですが

条件文、ループなどのプログラム的な部分をテンプレートに含める

場合、eval関数を使えば簡単に本格的なテンプレート処理が行えます!

jp.php.net/manual/ja/function.eval.php



eval — 文字列を PHP コードとして評価する

code_str で与えられた文字列を PHP コードとして評価します。 中でも、データベースのテキストフィールドにコードを保存し、 後で実行するためには便利です。

eval() を使用する際、注意するべき点がいくつかあります。 パーサが eval() の処理中に落ちないように、 渡す文字列はセミコロンで文が終了するといった有効な PHP コード である必要があります。また、code_str の 中の文字を適切にエスケープする必要があります。 HTML 出力と PHP コードを一緒に使用するために、 PHP 終了タグを使用して PHP モードを抜けることが可能です。

eval() の中で値を与えた変数は、 この後、メインスクリプトの中でもこれらの値を維持することも 覚えておいてください。


<?php
$string = ‘cup’;
$name = ‘coffee’;
$str = ‘This is a $string with my $name in it.’;
echo $str. “n”;
eval(“$str = “$str”;”);
echo $str. “n”;
?>

This is a $string with my $name in it.
This is a cup with my coffee in it.

ブラウザに直接結果を出力するすべてのものと同様に、出力制御関数 を使用してこの関数の出力をキャプチャーし、(例えば)文字列 (string)に保存することが可能です。