PHP_MEMO_テンプレートエンジンSmartyの使い方メモ
1. テンプレートエンジンの役割
- PHPファイルにはHTMLを埋め込むことが出来る
- デザインとロジックが一つのファイルに
- 実際の開発ではデザインはデザイナーが、ロジックはプログラマーが担当
- 分業しづらく、見通しも悪い
- テンプレートエンジンを用いてHTML部分のテンプレートを作成することで、
デザインとロジックの分離を行う。
2. Smartyとは
- 公式サイト :
TOP : PHP Template Engine | Smarty
日本語マニュアル : Smarty マニュアル | Smarty - PHP界隈では広く使われている(らしい)テンプレートエンジン
- 更新時にテンプレートファイルを解釈し、
PHPとして実行可能なファイルとしてコンパイル- 更新がない場合、コンパイルする必要がないため、処理が早くなる
- 最新バージョンはSmarty3.1.30 (2017年8月26日現在)
3. 基本的な利用の流れ
(PHP側)
smartyオブジェクトの生成
$smarty = new Smarty();
assignメソッドを用いてテンプレート内で利用する変数と割り当てるデータを指定
$smarty->assign("key", "data");
(key : テンプレート内で使う変数名, data : keyに割り当てるデータ)- 連想配列によってまとめて指定することも可
$smarty->assign(array("key1"=>"data1", "key2"=>"data2"));
displayメソッドを用いて、使用するテンプレートファイルを選択し、実行
- sample.tplの場合
$smarty->display("sample.tpl");
- sample.tplの場合
(HTMLテンプレート側)
- 「.tpl」拡張子のファイルを編集することになる
- 通常通りHTMLを記述していく
- PHP側から送られてきた変数を利用する場合
{$key}
のように記述- (例)
<title>{$key}</title>
と記述すると内部では
<title>data</title>
のように処理される
備考
PHP_MEMO_リクエストメソッドの利用メモ
1. リクエストメソッドとは
- リクエスト(要求)のメソッド(手法)
- WebブラウザからWebサーバにデータを送信する方法
- GETかPOSTがメイン
- GET : データの取得を目的とする場合向け(例 : 検索)
- データ制限あり
- URLに追加する形を取る(テキストのみ)
- POST : データの登録を目的とする場合向け(例 : アカウント登録)
- 大規模なデータも送信可能
- INPUTタグなどで指定すれば、画像をはじめとするファイルも送信できる
- GET : データの取得を目的とする場合向け(例 : 検索)
2. PHPでの利用
(GET)
(送信側) URLの最後に
?key=data
と追加する
(例)<A href = "http://localhost/search.php?word=php">検索</A>
(受信側) グローバル変数
$_GET["key"]
から取得する
(例)search.php内<?php $keyword = $_GET["word"]; searchDatabase($keyword); ?>
マルチバイト文字を使用する際には注意!
(POST)
(送信側) formタグ内で必要なフォームを設置する
(例)<form name = "form" method = "post" action = "AccountRegist.php"> 名前 : <BR> <input type = "text" name = "name"><BR> <input type = "submit" value = "登 録"> </form>
(受信側) グローバル変数
$_POST["key"]
から取得する
(例)AccountRegist.php内<?php print "確認 <BR>"; print "お名前 : ".$_POST["name"]; ?>
備考
グローバル変数
$_REQUEST["key"]
について- GETやPOSTに関わらず送信されたデータを格納する変数
- どちらのメソッドでデータが送信されるのかが分からない場合や、複数のページから異なるメソッドでデータが送信されてくる場合には有用かもしれない(要調査)
はみ出す目次の黒丸をどうにかしたい
はじめに
はじめまして、kaiです。
本ブログは「エンジニア(を目指す)ブログ」と題して、プログラミングやその周辺の技術について投稿していきたいと思います。と言ってもまだまだ基本的な部分を抑えきれていない初学者になりますので、投稿主の備忘録や学習の記録をアウトプットすることが中心となると思いますが、ご覧いただければ幸いです。