PHPリファレンス
UPDATE:2017年03月27日
PHPで簡単なテンプレートエンジンを作る!
PHPで簡単なテンプレートエンジンを作る!
有名なテンプレートエンジンに smarty がありますが、今回は自分で簡単なテンプレートエンジンを作ってみましょう。テンプレートエンジンを使用することで、表示部分のファイルを切り分けることが出来ます。
テンプレートファイル
まず最初に、テンプレート用ファイルの tpl.html を作成します。ソースコードは以下になります。ファイルを作成したら任意のディレクトリに保存してください。
tpl.html
1 2 3 4 5 6 7 8 9 10 11 12 | <!-- サンプルコード --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>PHPで簡単なテンプレートエンジンを作る!</title> </head> <body> テンプレート変数の値1:_%string1%_<br> テンプレート変数の値2:_%string2%_<br> </body> </html> |
テンプレートエンジン
次に、テンプレートエンジンとなる関数を作ります。ファイル名を function.php としてください。ソースコードは以下になります。ファイルを作成したら tpl.html と同じディレクトリに保存してください。
function.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <!-- サンプルコード --> <?php //テンプレート表示用の関数 function display_template($tplFile, $param) { ### テンプレートファイルを読み込み $html = file_get_contents($tplFile); ### テンプレートファイルの内容を置換 //テンプレートのブレース _%・・・%_ // .*は全ての文字を意味する .は任意の1字で*は0個以上 //パターン修飾子eは大文字小文字区別なし指定 $pattern = '/_%(.*)%_/e'; //置換内容の指定 //$n 形式 参照を指定することができます。 //詳細 http://php.net/manual/ja/function.preg-replace.php $replacement = '$param[\'$1\']'; //置換実行 $html = preg_replace($pattern, $replacement, $html); ### リターン処理 return $html; } ?> |
アクセスするファイル
最後に、直接アクセスするページを作成します。ファイル名を index.php としてください。ソースコードは以下になります。ファイルを作成したら、 tpl.html と同じディレクトリに保存してください。
index.php
1 2 3 4 5 6 7 8 9 10 11 12 | <!-- サンプルコード --> <?php ### インクルード require 'function.php'; ### テンプレートで使用する配列データの作成 $param['string1'] = 'PHPで簡単なテンプレートを作る!'; $param['string2'] = 'テンプレートを表示しました。'; ### テンプレートエンジン実行&テンプレートの表示 echo display_template('tpl.html', $param); ?> |
これでファイル作成は完了です。index.php へ Webブラウザからアクセスすると、テンプレートファイルの内容が表示されると思います。その際、テンプレートの ブレース _%・・・%_ 部分が、テンプレートエンジンによって配列の値に置換されているはずです。
実行結果
テンプレート変数の値1:PHPで簡単なテンプレートを作る!
テンプレート変数の値2:テンプレートを表示しました。
テンプレート変数の値2:テンプレートを表示しました。
タグ(=記事関連ワード)
タグ: PHPテクニック
日付
公開日:2014年2月13日
最終更新日:2017年03月27日
最終更新日:2017年03月27日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpref-tech_phptemplate/trackback/