Template Extension Package

NaifyViewExtension

NaifyViewの外部テンプレート構文を追加するパッケージ

Smarty / Twig構文 NaifyViewへの拡張 PHP 8.0+

NaifyViewExtensionとは

Smarty・Twigで書かれたテンプレートをNaifyViewで描画するための拡張です。外部構文の変換とフィルターを担当し、描画とキャッシュにはNaifyViewの仕組みを使います。

NaifyViewExtensionはNaifyViewに依存します。NaifyView本体は、この拡張を追加せずに使えます。

使い始めるには

NaifyViewExtension::configure()で構文と探索先を設定し、create()でViewを生成します。

use NaifyViewExtension\NaifyViewExtension;

require __DIR__ . '/libs/NaifyView/NaifyView.php';
require __DIR__ . '/libs/NaifyViewExtension/NaifyViewExtension.php';

$config = NaifyViewExtension::configure(__DIR__ . '/views')
    ->smarty()
    ->setCacheDir(__DIR__ . '/_cache/naify-view');

$view = NaifyViewExtension::create($config);
echo $view->render('hello.tpl', ['name' => 'Naify']);

views/hello.tplの例です。

<p>Hello, {$name|escape}!</p>

Twig構文を使う場合はsmarty()をtwig()に替えます。configure()は呼び出すたびに独立した設定を作り、生成したViewには通常のassign()・render()を使えます。

対応範囲と移行時の確認

Smarty・Twig本体を同梱するものではなく、対応する構文をNaifyViewの描画処理へつなぐ仕組みです。すべての機能やプラグインとの完全互換を保証するものではありません。移行時は、使用している構文・フィルターと描画結果を確認します。

Smartyでは既存テンプレートとの互換のため、渡された値からのメソッド呼び出しを広く許可します。TwigからPHPメソッドを呼ぶ対象は、assignTrusted()で明示します。信頼できる作成者のテンプレートを使用してください。

HTMLへの出力ではエスケープを指定します。構文の変換と、出力先に応じた値の処理は分けて考えます。

主要クラス

クラス役割
NaifyViewExtension拡張設定とView生成の入口です。
NaifyViewExtensionConfiguratorSmarty・Twigの選択、探索先、キャッシュ、フィルターなどを設定します。
SmartyExtensionSmarty構文の変換とフィルターを登録します。
TwigExtensionTwig構文の変換とフィルターを登録します。

関連:NaifyView / Native構文リファレンス