SQLの窓

2015年06月25日


【3大手法】 PHP で変数を埋め込んだ画面定義を外部ファイルにして、ループ内で展開する

外部ファイルを読み込む手段としては二つあって、一つは一般的な require で行います。もう一つはテキストファイルとして file_get_contents を使用します。

以下のサンプルソースの実行時の環境としては、データベースに対して接続した後、select 文を実行して行データをループで取得しているという前提です。

require 使った標準的な手法

この方法は PHP のあたりまえの記述で、想定通りの結果になる手法です。ただ、外部ファイルの埋め込み方法の記述も一般的になる為、変数埋め込みの記法が面倒で、画面作成やメンテナンスに時間がかかりますし、他の目的への転用は全くできません。
// 画面作成
print "<table>";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {

	// 行の繰り返し
	require("view_row.php");

}
print "</table>";

<tr>
	<td class="left"><?= $row["社員コード"] ?></td>
	<td class="right"><?= $row["氏名"] ?></td>
</tr>


file_get_contents 使った手法

この方法は、画面定義用の文字列を単純に外部ファイルにして、テキストデータ内の変数を eval を使って置き換える手法です。この場合、変数部分以外も単純な文字列なので、正規表現による置換や単純な置換の対象となりますし、利用方法はいろいろな場面であらわれると思います。( SQL 文の定義にも有効です )

ただ、変数の記述部分のルールとして、連想配列部分の文字列はシングルクォートで書く必要があります
// 画面作成
print "<table>";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {

	// 行の繰り返し
	$view_row = file_get_contents("view_row.txt");
	$view_row = str_replace('"', '\\"', $view_row );
	eval("\$view_row = \"$view_row\";");
	print $view_row;

}
print "</table>";

<tr>
	<td class="left">{$row['社員コード']}</td>
	<td class="right">{$row['氏名']}</td>
</tr>



require の中で、ヒアドキュメントを使う方法

この方法が一番簡単で単純で、本来のヒアドキュメントの目的をしっかり使ったものです。難しい問題は全く無く、自然に使える方法です。

ここでは、print を外に出して使っていますが、view_row.php 内で print してしまってもかまいません。
// 画面作成
print "<table>";
while ($row = $result->fetch_array(MYSQLI_BOTH)) {

	// 行の繰り返し
	require("view_row.php");
	print $view_row;

}
print "</table>";

<?php
$view_row = <<<VIEW_ROW
<tr>
	<td class="left">{$row["社員コード"]}</td>
	<td class="right">{$row["氏名"]}</td>
</tr>
VIEW_ROW;
?>

いずれも関数化する事は可能ですが、テキストを外部に定義して管理するという目的においては、file_get_contents を使う方法が最も優れています。( 画面作成の場合、文字列を取得するだけで後で使うという選択肢のほうが現実的です )

require は、その場で書いてしまう場合において、一般的なメンテナンス性が向上するはずです。

関数化する場合は、埋め込む変数にスーパーグローバルの $GLOBALS を使うといいです。


タグ:PHP
【PHPの最新記事】
posted by lightbox at 2015-06-25 11:14 | PHP | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり