今から始める MySQL入門(11)
Smartyでテンプレートエンジンの威力を知る
鶴長 鎮一(book@tsurunaga.jp)
2007/10/9
テンプレートが果たす役割
改まったビジネス文書や手紙の作成にはしばしば、テンプレートが利用されます。テンプレートに差出人や相手方の情報を入力するだけで、気の利いた季節のあいさつや丁寧な結びの句を織り交ぜた文書を簡単に作成することができます。
さて、PHPはHTMLタグとPHPコードが共存できることを特徴とし、多くの利用者を獲得してきました。しかしPHPコードが冗長になるにつれ、HTMLの記述が複雑になり、デザインの修正が難しくなる傾向があります。
そこでPHPにおいても、文書テンプレートのアイデアを取り入れた「テンプレートエンジン」が利用されます。
テンプレートエンジンを利用すれば、PHPコードで作られたロジックが吐き出す値を、HTMLデザインを分離したテンプレートに埋め込むことが可能になります。この結果、ロジックを作成する作業と、HTMLデザインを編集する作業を分担して行うことが可能になります。
テンプレートエンジン「Smarty」の特徴
PHPのテンプレートエンジンとして広く利用されているものの1つに「Smarty」が挙げられます。
| 関連リンク: | |
| Smarty日本語マニュアル http://smarty.php.net/manual/ja/ |
|
Smartyで使用するテンプレートでは、単に値をはめ込むだけでなく、if文による条件分岐やforeachによるループ処理など、必要最低限の制御構造や組み込み関数が利用可能です。もちろんこうした機能の利用は必須ではなく、HTMLテキストと単純な変数のみでテンプレートをまとめることもできます。
またSmartyは動作速度の面でも秀でています。最初にリクエストが発生した際に、テンプレートファイルを実行可能なPHPスクリプトにコンパイルし、その後のリクエストではコンパイルされたPHPスクリプトを再利用します。テンプレートに変更が加えられたときにのみコンパイルを再実行するなど効率面でも優れています。
ほかにも、キャッシュ機能を搭載するなど、PHP本来のパフォーマンスを損なうことなく、ロジックとデザインを分離することができます。Smartyの詳細については、先に挙げたURLを参考にしてください。
![]() |
| 図1 Smartyによるロジック作業とデザイン作業の分離 |
Smartyの多機能さを見ると、難解なコードや複雑なインストール作業を予想し、尻込みするかもしれませんが、導入や利用は至って容易です。新規のインストールはもちろん、既存のPHPコードに導入することもできます。
以下、Smartyの簡単なサンプルを用いて、その基本機能を紹介します。
Smartyとsample8のインストール
■Smartyのインストール
Smartyの公式サイト(http://smarty.php.net/download.php)からソースアーカイブをダウンロードし、展開します。展開後、ソースアーカイブに含まれるlibsディレクトリごと、「/usr/local/lib/」などApache HTTPのデーモン権限で読み出し可能なディレクトリに移動します。
# tar xvfz Smarty-2.6.18.tar.gz |
Smartyの基本インストールは以上です。
後はコンテンツごとにSmartyが利用する作業ディレクトリを作成します。これらの作業ディレクトリの中には、テンプレートを設置するディレクトリのほか、コンパイルで作成されるPHPコードの展開先ディレクトリが含まれます。Smartyを利用するには、次のいずれかの方法でSmarty.class.phpを読み込みます。
<?php |
<?php |
ほかに、「/etc/php.ini」を編集してinclude_pathにライブラリディレクトリを追加する方法や、ApacheのドキュメントルートやPHPスクリプトと同じディレクトリにライブラリを展開する方法もあります。ただし本稿では、「手動でSMARTY_DIR定数を定義する場合」を基に解説を加えていきます。
■sample8のインストールと動作確認
こちらからサンプルアーカイブ「sample8.tgz」をダウンロードし、Apache HTTPデーモン(Apache HTTPD)のドキュメントルート(*注)など、PHPが動作するディレクトリに展開し、作業ディレクトリを移動します。
| 注:ソースからデフォルトインストールした場合は/usr/local/apache2/htdocs、FedoraやRed hatなどRPMインストールした場合は/var/www/htmlなど |
Smartyを動作させるには、PHPスクリプトとテンプレート以外に、4つのディレクトリ(tempalates/templates_c/configs/cache)を必要とします。これらのディレクトリはサーバ単位ではなく、コンテンツ単位で用意することが推奨されています。
sample8にもこれらのディレクトリが含まれていますが、各ディレクトリのオーナーやパーミッションを再設定する必要があります。Smartyのコンパイル処理はApache HTTPDデーモンの権限で実行されるため、コンパイル済みのPHPコードが保存されるディレクトリ(templates_c)は、Apache HTTPDの権限で読み込み/書き込みができるよう設定します。キャッシュデータが保存されるディレクトリ(cache)についても同様です。
| サンプルダウンロード: | |
| sample8のtarアーカイブ | |
サンプル「sample8」をドキュメントルートに展開し、作業ディレクトリを移動する。下のドキュメントルートはFedoraやRed HatなどRPMインストールした場合の例。適宜変更する
|
| 第10回へ |
1/3 |
|
||||||
|
||||||
| 連載 今から始める MySQL入門 |
| Linux Squareフォーラム データベース関連記事 |
| 連載:快速MySQLでデータベースアプリ!(全11回) 軽快な動作で知られるRDBMS、MySQLでDBアプリの構築を行う。MySQLのインストールに始まり、PerlやRubyなどのスクリプトでデータベースを操作する方法までを完全解説 |
|
| 連載:今から始める MySQL入門(連載中) 定番のLAMP(Linux+Apache+MySQL+PHP)構成でWebアプリケーション開発に挑戦! サンプルアプリの構築を進めながら、基礎知識や操作方法について詳しく解説する |
|
| 連載:Oracleマイスター養成講座(全6回) 本連載では、Oracleの管理・チューニング方法を紹介していく。これからOracleを始める人、そしてOracleをより深く理解したい人のための、一歩踏み込んだ実用講座 |
|
| 連載:DB2マイスター養成講座(全7回) 本連載では、DB2 UDBの実践的な運用・管理方法を紹介していく。DB2を利用するうえで必要な知識を、実運用を前提にDB2のプロが解説 |
|
| 特集:エンタープライズ市場に向かうMySQL
5.0[前編] MySQL 5.0の新機能をアルファ版でチェック 1月に公開された5.0アルファ版は大幅に拡張されており、エンタープライズ市場への進出を予感させる |
|
| 特集:Linuxで動くリレーショナルデータベース・カタログ データベースサーバのOSとしてLinuxを採用するケースが増えている。Linuxで動作する7つの主なリレーショナルデータベースを紹介する。製品導入の際の参考にしてほしい |
|
|
ホワイトペーパー(TechTargetジャパン)
- natテーブルを利用したLinuxルータの作成・2 (2010/3/11)
IPパケットのディスティネーションアドレスを書き換える「DNAT」を使って、透過型プロキシを構築します - 一歩進んだ監視のカスタマイズ (2010/3/3)
スクリプトの実行結果などを取得できるユーザーパラメータを用いて、自分のニーズにぴったり合った監視を実現 - OSSライセンス順守の第一歩 (2010/2/18)
企業として、OSSライセンス違反を犯さないためには、どのような手順が必要か、いくつかアドバイスします - 無視できないフラグメンテーション問題への解答は? (2010/2/10)
今回は、メモリコンパクション、そしてメモリバリアを発行するシステムコールという2つのパッチについて深く紹介します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |







