解説(3)Smartyを使う準備をする
ヤフーショッピングの商品検索PHPプログラムのサンプルコード(serch.php)解説。
今度はPHPのテンプレートエンジン・スマーティ(Smarty)を使うための指定です。
テンプレート・エンジンというのは、デザインを別のファイルで管理する仕組みです。
PHPというのはweb用のプログラミング言語なので、複雑なデザインのページを作るためにもプログラム部分とデザイン部分を分離して管理するわけですね。
// ---------------- スマーティを使う準備 --------------------------- //require_once('./Smarty/libs/Smarty.class.php');
スマーティを使うために、スマーティのファイルを呼び出します。
require_once関数は、ファイルを読み込む関数ですが、すでに読み込み済みの場合は再読込しないと言う関数です。
エラーメッセージも出ません。
$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->config_dir = './configs/';
$smarty->cache_dir = './cache/';
ここまでは、スマーティが処理に使うディレクトリの指定部分です。
templatesは、ページのテンプレートを入れる部分、templates_cは、テンプレートを元に一時ファイルを作るフォルダcacheは、作ったページをキャッシュとして保存する場合に格納する場所です。
$smarty->caching = 0;
$smarty->cache_lifetime = 60*60;
//0はキャッシュを持たない。
2はライフタイムこの部分は、作ったページをキャッシュ(一時保存)するかどうかの指定です。
キャッシュする場合は、キャッシュIDと言うのを作っておいて、それを呼び出します。
// キャッシュidを登録if(!$cache_id){$cache_id = md5($keywords.$ysort);}
ここではキーワードとソート順を連結させたモノを使ってIDを指定しています。
IDの決め方は自由ですが、同じ文字列にならないように工夫する必要があります。
md5関数というのは「文字列のmd5ハッシュ値を計算する」と言う関数で一種の暗号です。
たとえば「抱き枕」は「72ab4c55a8813a837adffe763cc2ed40」というモノになりますが、ハッシュ値は元の文字列が何であれ同じ長さになって、ハッシュ値からは元の文字列が計算しにくいという特徴があります。
ショッピングサイトの場合、商品の値段が変わったり、入手可能性(在庫があるかどうか)が刻々と変わっていくので、情報は最新のモノを表示したいモノなんですが、WebAPIで毎回サーバーにリクエストを投げていると、通信事情などのせいで、ページの表示が遅くなることがあります。
そう言うことを防ぐためにキャッシュという機能があります。
今回のサンプルファイルでは、キャッシュしないプログラムですが、後々キャッシュを使う可能性も考えて、この行もつけています。