このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

PHP テンプレートエンジン Smarty 使用方法

PHP

2012.09.11

この記事は最終更新日から1年以上が経過しています。

流れでSmartyを使うことになりましたので、色々と残していければよいかと。

まず、Smartyとはなんぞよ?のところから。

簡単に言いますとPHPのテンプレートです。(きっぱり)

PHPにはHTML内にコードを埋め込むことが出来るという他の言語にない特徴を持っていまして、初心者でも比較的直感的に使うことができます。が故、動的なWebページやWebアプリケーションを作成する際、PHP の言語を用いられて作成されることが多いです。

そんなPHPの言語をもっと簡単に短い記述で機能を追加しようではないか!っていうのがSmartyになっちゃいます。

Smartyとはなんぞや

先程も述べさせて頂きましたが、SmartyはPHPのテンプレートエンジンです。

ロジックとデザインの分離の為のテンプレートエンジンで、PHPのお手軽さ+保守性に優れているため多く利用されているようです。

 Andrei Zmievskiが社内用に開発した「SmartTemplate」が前身のテンプレートエンジンのようで 「スマート(smart)」なテンプレートエンジンを。という意味合いを込めてSmartyと名付けたようです。

システムをMVC( 「Model」(データベースなどビジネスロジックを扱う要素)「View」(出力結果のHTML表示などUIを扱う要素)「Controller」(入出力を制御しModelとViewの橋渡しを行う要素))の3つに分けて実装する方式で、開発作業の分担を容易にし、作業途中に発生するの仕様変更にも最小限にするメリットがあります。

また、記述がより容易になる他にも「高速で動作」するという特徴を持っています。

インストール

公式サイトからインストールすることが出来ます。

Smarty 公式サイト

http://www.smarty.net/

Smarty 公式サイト(日本)

http://www.smarty.net/docsv2/ja/

ダウンロード

http://www.smarty.net/download

以下の項目からダウンロードすることが可能です。

tarファイルかzipファイルかも選択可能です。

2012年9月現在だと、3.1.11が最新ですかね。「Smarty-3.1.10.tar.gz」か「Smarty-3.1.zip」をクリックするとダウンロードできます。

セッティング

インストールが完了しましたら、使用出来るようにセッティングしましょう。

開発環境を作るためMAMPをインストールします。(MAC)

MAMPのセッティングはこちら「MAMPの設定方法」を参照に。

Smartyのファイルをダウンロードし、展開すると以下のディレクトリとなっています。

Smarty-v.v.vv

|-change_log.txt 等

|-libs/

|         |-plugins/

|         |-sysplugins/

|         |-sysplugins/

|         |-SmartyBC.class.php

|         |-Smarty.class.php

|-demo/

|          |-cache/

|          |-configs/

|          |-plugins/

|          |-templates/

|          |-templates_c/

MAMPで使用する際のディレクトリ(デフォルト)
/Applications/MAMP/bin/php/php5.3.6/lib/php
↑こちらに先ほど解凍した「Smarty-v.v.vv」を配置するのですが、必要なのは「libs」のファイルとなります。

|-libs/

|         |-plugins/

|         |-sysplugins/

|         |-sysplugins/

|         |-SmartyBC.class.php

|         |-Smarty.class.php

「Smarty-v.v.vv」を「Smarty」にリネームし、直下に「libs」以下のファイルを置きます。

php.iniの変更

アプリケーション>MAMP>conf>php5.3>conf 内に格納されているphp.iniの変更を行います。

277行目 display_errors = Off を display_errors = On に変更
287行目 log_errors = Off を log_errors = On に変更

※変更しなくても使用できますが、デフォルトだとエラーメッセージを表示しない設定になっているので、エラーメッセージを表示させるようにします。

それでは、/Applications/MAMP/htdocs/にindex.phpを作成し、テストを行います。

Smarty を利用するためにはSmarty.class.phpを読み込まないといけないので、Smarty.class.phpをrequire_onceで呼び出します。

<!?php
require_once('Smarty/Smarty.class.php');
$smary = new Smarty;
?>

 

ディレクトリを定義して読み込み方

<?php 
define('SMARTY_DIR', '/usr/local/lib/Smarty/libs/' );
require_once( SMARTY_DIR . 'Smarty.class.php' );
$smarty = new Smarty();
?>

 

http://localhost:8888/

を開き、特に問題なければエラー表示も出ず、真っ白な画面となります。

Smarty を利用する場合、libs ディレクトリ内の構成が改変されていなければ、

基本的にSmarty.class.phpファイルさえ見つけられればライブラリを利用することが出来るようになります。

これで一応MAMPでのセッティングはOKですね。

ライブラリファイルが正常に設置できたなら、次は、実際に作成するアプリケーションのために Smarty用のディレクトリの設定となります。

smartyで必要なディレクトリは以下のとおりです。

・テンプレートディレクトリ
・コンパイルディレクトリ
・設定ファイルディレクトリ
・キャッシュディレクトリ

インストールして解凍したファイルに含まれている「demo」ディレクトリを確認してもらえれば分かるのですが、

以下のディレクトリーを作ることになります。

templates・・・テンプレートディレクトリ

templates_c・・コンパイルディレクトリ

configs・・・設定ファイルディレクトリ

cache・・・キャッシュディレクトリ

詳細はそれぞれ、

templates・・・テンプレートファイルを格納するディレクトリ。各テンプレートファイルの拡張子は .tpl

templates_c・・テンプレートファイルを利用して php ファイルに展開されたファイルを格納するキャッシュ用ディレクトリ。

Webサーバー(httpd)がファイルを作成するので、httpd.conf で設定されている Webサーバーを起動するアカウント(User, Group)が書き込みできるオーナーとパーミッションにしなければなりません。

configs・・・テンプレートなどを利用する際の設定や初期値などを登録するファイルを格納するディレクトリ。 設定ファイルが test.conf という名前の場合、テンプレートファイル内で以下のように利用します。

cache・・・built-in cachingという機能を有効($smarty->caching = true;)にした際に使用されるキャッシュ用ディレクトリ。Webサーバー(httpd)がファイルを作成するので、httpd.conf で設定されている Webサーバーを起動するアカウント(User, Group)が書き込みできるオーナーとパーミッションにしなければなりません。

となっています。

先ほど作成したindex.phpのディレクトリに作成していきます。

/Applications/MAMP/htdocs/

ディレクトリ

|-htdocs/

|         |-index.php

|         |-templates/

|         |-templates_c/

|         |-configs/

|         |-cache/

それではテストとして、templates/にtest.tplを作成します。

test.tplを作成し、以下のコードを記述。

今日は{$smarty.now|date_format:'%Y年%m月%d日'}です。

 

ドキュメントルートに置いたファイルを編集

$smarty->display('test.tpl');

 

を追加してtemplates/に配置したtest.tplを呼び出します。

index.php

<?php 
ini_set( 'display_errors', 1 );
require_once('Smarty/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = 'templates/';
$smarty->compile_dir = 'templates_c/';
$smarty->config_dir = 'configs/';
$smarty->cache_dir = 'cache/';

$smarty->display('test.tpl');
?>

 

今日は2012年09月11日です。

と日付が表示されれば問題ありません。

Comment

Related Article

Laravel 4 を PHP 7 環境へ移行したお話。

2018.06.10

PHP 簡易アクセスログ 出力

2016.04.29

Laravelを 別環境に移動したら画面が真っ白に。MacにComposer、php mcrypt 等をインストールしたお話。

2015.10.10

遅れましたが..あけましておめでとうございます!2015年は Laravelで画像処理。からということで。

2015.01.08

IDE phpstorm, IntelliJ IDEAの Database接続が便利すぎる件(Vagrant + IntelliJ IDEA でMySQL操作)

2014.11.29

Laravel4でもSmartyを使用したい!

2014.11.20

人気急上昇!PHPフレームワーク「Laravel」を使ってみました。簡易会員サイト作成編

2014.09.24

Laravel4 パーミッションエラー Vagrant パーミッションが変更しない件

2014.08.24

【CentOS6】 PHP5.3からPHP5.5にバージョンアップしました

2014.08.11

人気急上昇!PHPフレームワーク「Laravel」を使ってみました。 インストール 〜 起動まで。

2014.08.10

CATEGORY LIST

LATEST NEWS

部下を育てる技術

イベント

2020.04.08

令和の時代に、JavaScriptで Shift-JISファイル作成 全銀データフォーマットに対応する。

JavaScript

2020.03.03

インターネットにて世論調査を行う「世論Web」サービスを始めてみました。

JavaScript

2020.01.31

まだ間に合う!!ラズベリーパイ購入なら「RSコンポーネンツ」で!最大40%オフの年に1度の大特価期末セール中!

RaspberryPi

2020.01.25

年末のレトロゲーム熱の際、ファミコンソフト一覧パッケージ作ってました。

JavaScript

2020.01.24

TSUKUMO の初売りでNAS (Synology DiskStation DS218j)購入!!

イベント

2020.01.04

Mac用 エミュレーター 「OpenEmu」が、V2.2リリース!GameCube対応して更に神アプリ進化!

Game

2020.01.01

この時期になると、やたらレトロゲームをやりたくなるのはなんですかね?ハードオフに向かうの巻その2

Game

2019.12.31

この時期になると、やたらレトロゲームをやりたくなるのはなんですかね?ハードオフに向かうの巻

Game

2019.12.14

MacでWindowsアプリ(TeraPad)を動かす(Wine 4.0.3)

mac

2019.12.08

kindleストア7周年記念セール中!技術書なども40%OFF以上でお買い得!(11/7まで)

イベント

2019.10.28

あと10日で「jsdo.it」のサービスが終わってしまう!! ソースダウンロードまだの方は急げぇ〜!

JavaScript

2019.10.21

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US