Hello, Smarty World!

Posted on 2月 20th, 2012 by cx20

Smarty

Smarty は PHP 用のテンプレートエンジンである。名前の由来は「スマート(smart)」から。
ページにアクセスするとテンプレートはコンパイルされ PHP スクリプトに展開される。

ソースコード(テンプレート)

<html>
  <head>
     <title>Hello, World!</title>
  </head>
  <body>
    <p>Hello, {$message} World!</p>
  </body>
</html>

ソースコード(PHP)

<?php
require_once 'libs/Smarty.class.php';
$smarty = new Smarty();
$smarty->template_dir = 'templates/';
$smarty->compile_dir  = 'templates_c/';
$smarty->assign('message', 'Smarty');
$smarty->display('template.html');
?>

上記の PHP コードならびにテンプレートは実行時に以下の PHP スクリプトに展開される。

コンパイル結果(PHP)

<?php /* Smarty version Smarty-3.1.7, created on 2012-01-31 00:10:09
         compiled from "templates/template.html" */ ?>
<?php /*%%SmartyHeaderCode:10960230224f26b28ceec5c3-38524326%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_valid = $_smarty_tpl->decodeProperties(array (
  'file_dependency' => 
  array (
    '41d3b4a4b71afe0c223778e57c23244caee1baec' => 
    array (
      0 => 'templates/template.html',
      1 => 1327936205,
      2 => 'file',
    ),
  ),
  'nocache_hash' => '10960230224f26b28ceec5c3-38524326',
  'function' => 
  array (
  ),
  'version' => 'Smarty-3.1.7',
  'unifunc' => 'content_4f26b28d05af0',
  'variables' => 
  array (
    'message' => 0,
  ),
  'has_nocache_code' => false,
),false); /*/%%SmartyHeaderCode%%*/?>
<?php if ($_valid && !is_callable('content_4f26b28d05af0')) {function content_4f26b28d05af0($_smarty_tpl) {?><html>
  <head>
     <title>Hello, World!</title>
  </head>
  <body>
    <p>Hello, <?php echo $_smarty_tpl->tpl_vars['message']->value;?> World!</p>
  </body>
</html>
<?php }} ?>

実行方法

ディレクトリ構成
/doc               … 公開用フォルダ
    /libs          … ライブラリ配置場所
    /templates     … テンプレート配置場所
    /templates_c   … テンプレートコンパイル結果配置場所
 
1. ライブラリ(Smarty.class.php)を libs に配置
2. テンプレート(template.html)を templates に配置
3. ソース(hello.php)を公開フォルダに配置
4. ブラウザで表示
   http://localhost/doc/hello.php

実行結果

Hello, Smarty World!

Tags:

Categories: PHP

コメントを残す

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

WP-SpamFree by Pole Position Marketing