PHP テンプレートエンジン Smarty HelloWorld

今回は、PHPのテンプレートエンジン Smarty を利用して、

簡単なHelloWorldページを表示させるところまでメモしようと思います。

[Smarty利用方法]

  • Smarty zip に含まれている libs フォルダを丸ごと配置する
  • 実行するphpに、Smarty.class.phpを読み込ませる
  • templatesフォルダをlibフォルダと同階層に作成して、そこにテンプレートファイル(.tpl)を配置する
  • templates_cフォルダをtemplatesフォルダと同階層に作成する

Smarty ダウンロード

まずは、Smartyの公式サイトからモジュールを取得します。

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

 

Smarty ダウンロード

Downloadというリンクからダウンロードページに移動します。

近日に確認した際には、3.1.35が最新のため、こちらを利用します。

Smarty ダウンロード

バージェン名をクリックするとGithubページに遷移しますので、こちらから取得します。

Smarty ダウンロード

Smarty ダウンロード

Smarty ダウンロード

zipをダウンロードしたら、解凍します。

複数ファイルが格納されていますが、動作に必要なものはlibsに配置されています。

Smarty ダウンロード

 


Smarty 配置

Smartyを利用する場合、Smartyのzipに含まれていたlibsフォルダを丸ごと配置します。

そして、libsフォルダと同階層にtemplatestemplates_cというフォルダを作成します。

templatesには、テンプレートファイル(tpl)を配置します。

templates_cには、テンプレートの内容をコンパイルしたファイルが配置されます。

Smarty 配置

※上記ではpublicフォルダに、Smartyを利用するPHPファイルを配置していますが、

Smarty.class.phpを読み込めれば、どの配置でも問題ありません。

 


Smarty HelloWorld 実装

Smartyを利用してViewを表示させるPHPを実装します。

<?php

// Smartyクラスを読み込む
require_once("../libs/Smarty.class.php");

// Smartyのインスタンスを生成
$smarty = new Smarty();

// テンプレートディレクトリとコンパイルディレクトリを読み込む
$smarty->template_dir = "../templates/";
$smarty->compile_dir = "../templates_c/";

// assignメソッドを使ってテンプレートに渡す値を設定
$smarty->assign("name", "World"); // HelloWorldの「World」表示用

$smarty->assign("kazu", 10); // loop count用

$smarty->assign("if_flag", true); // if 判別用

// 表示テンプレート指定
$smarty->display("Hello.tpl");

Smarty 指定

続けて、テンプレート側も実装します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hello World!</title>
  </head>
  <body>
    <div>Hello.tpl</div>
    <div>Hello {$name}!</div>

    <hr>
    {* ループサンプル *}
    <ul>
    {for $foo=1 to $kazu}
    <li>{$foo}</li>
    {/for}
    </ul>

    <hr>
    {* 条件分岐サンプル *}
    {if $if_flag}
    <p>booleanは、、、$if_flag:{$if_flag}</p>
    {else}
      <!-- 到達不能 -->
    {/if}
  </body>
</html>

コメントは、{**}という形で表記します。

HelloWorldの表示だけでなく、ループと条件分岐の簡単なサンプルも実行してみます。

Smarty サンプル sample

 


実行確認

実行確認は、通常のPHPと同様にApacheなどのhttpサーバーを起動して行います。

XAMPやMAMPを利用しても良いですが、

PHPのインストールしている場合には、ビルトインサーバーなどを利用すれば簡単に実行確認できます。

PHP HelloWorld Built-in HTTPサーバー起動

Apacheを起動してアクセスすると以下の様に表示されれば、正常に動作しています。

Smarty テンプレート


 

今回のメモは以上となります。

昨今では、PHPですとLaravelが人気のため、

Blade以外のテンプレートエンジンは、新規で採用される機会は少ないと思います。

また、Laravel以前に、モダンなWebシステム開発では、

勢いのあるフロントエンド(js)を採用して実装することが殆んどだと思いますので、

案件特有の事情がなければ、無理して勉強する必要性はほとんどありません。

 

ただ、Smarty自体はまだリリースも定期的に行われている様ですし、

フロントエンド(js)の技術を利用することなく、

ViewとControllerの役割をはっきりと分けたい場合には、選択を検討しても良いかもしれません。

 

一番、Smartyに出会う可能性があるのは、

古いシステムを少しだけ回収する様なケースか、完全に一から作り直す際に、古いシステムのコードを分析するときでしょうか。

 

もしそういったケースで、Smartyを扱う&Smartyの実装を読むことになっても、

公式のドキュメントも分かりやすく書かれていますので、そこまで苦労することは無いと思います。

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

 

都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 172

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る