Home >DirectSmarty : PHP で .php ファイルと Smarty のファイルを1つにまとめる方法(2)

DirectSmarty : PHP で .php ファイルと Smarty のファイルを1つにまとめる方法(2)

  • 2006-06-08 (木)

先々月に「PHP で .php ファイルと Smarty のファイルを1つにまとめる方法」というのを紹介しました。

PHP で .php ファイルと Smarty のファイルを1つにまとめる方法の紹介です。

PHP でテンプレートとして Smarty を使用すると、PHPファイルの他にSmartyのテンプレートファイルが必要となる。通常はそれでかまわないのであるが、何らかの事情により、「Smarty は使いたい、でもファイルは1つにまとめたい」というような場合に、1つにする方法があります。

しかし、自分としては、PHPスクリプトの途中で $tpl = にテンプレートの内容を代入して、その後 Smarty::display('var:'.$tpl) を呼び出すのは、PHP スクリプト → Smarty テンプレート → PHP スクリプト、という順序になり、あまり美しくないと思っていました。

そこで、これを PHP スクリプト → Smarty テンプレート、で完結できるように Smarty のクラスから派生させて DirectSmarty というクラスを作ってみました。

directsmarty.class.php (PHP License)

DirectSmarty を使うと以下のような感じで PHP スクリプト、および Smarty テンプレートが記述できます。

<?php
// まずは、PHP スクリプト
rquire_once 'directsmaty.class.php';

$message = 'DirectSmarty';

$t = new DirectSmarty;
$t->assign('message', $message);
$t->displayDirect();

// ここから Smarty テンプレート
?>
<html>
<head>
<title>Hello {$message|escape}</title>
</head>
<body>
<h1>Hello {$message|escape}</title>
</body>
</html>

いかがでしたでしょうか。役に立ちそうでしょうか。

次にやりたいのは、PHP スクリプトの部分で定義した変数、上記の例で言うと $message、を自動的に Smarty オブジェクトに assign() したいなあと思っています。良い方法を思いついたら紹介したいと思います。

Home > DirectSmarty : PHP で .php ファイルと Smarty のファイルを1つにまとめる方法(2)

Search
Feeds

Page Top