外部ファイルを読み込む手段としては二つあって、一つは一般的な 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の最新記事】
- ロリポップのモジュール版 PHP でエラーを出力する方法
- PHP : unset によるオブジェクトのプロパティのと配列の要素の削除
- レンタルサーバで PHP のバージョンを 5.4 から 5.6 に変更する時の注意事項
- PHP で pathinfo と mime 情報やその他を合体した、get_finfo 関数を使って、opendir からファイル一覧を出力
- Windows で、MySQL を使っているので phpMyAdmin で参照しようとして、AN HTTPD だと setup が動かなかったので Apache を入れようとしたらいろいろルールがあっ..
- PHP : ファイルのアップロード時のデータのダンプ( PHP 5.4.0 以降で利用可能な php://input での取得 / ASP / C# )
- PHP で問い合わせ画面のページリンクを常に5つ作成しておいて、jQuery でいらないリンクを非表示にする
- PHP : HTMLのinput要素のname属性に二次元配列を指定して getElementsByName と jQueryのinput[name='value']:eq(n) でアクセステスト
- PHP の簡易ログとしては file_put_contents が使われますが、表現方法をいろいろテストして行くと、PHP のバージョンを 5.4.0 以上にして json_encode を使いたくな..
- さくらのサーバーで hash_hmac のアルゴリズムで使えるもの
- Pear を使用してダウンロード時のみ zip 圧縮してブラウザにデータを送る( プログレスバーはでません )
- Windows 環境で Pear のインストール
- PHP : php-5.3.1 の日付関数の注意点
- PHP : 暗号化と複合( libmcrypt )
- begin で始まるテキストで添付されたファイル(uuencode)を元に戻す方法