コンパイラ関数プラグイン (プラグインによる Smarty の拡張) - PHPプロ!マニュアル

Smartyマニュアル

プラグインによる Smarty の拡張 - コンパイラ関数プラグイン

コンパイラ関数プラグイン

コンパイラ関数プラグインはテンプレートのコンパイル時にのみ呼び出されます。 これらのプラグインは、PHPコードまたは時間に依存する静的コンテンツをテンプレートに含める時に便利です。 コンパイラ関数と カスタム関数 が双方とも同じ名前で登録された場合は、コンパイラ関数が優先されます。

mixed smarty_compiler_name (string $tag_arg, object &$smarty)

コンパイラ関数には2つのパラメータを渡します。 これらのパラメータは、タグ内の文字列(基本的に関数名から終端デリミタまでの全ての文字列)と、 Smartyのオブジェクトです。戻り値には、コンパイルされたテンプレートに挿入されるPHPコードを返します。

例 16-6. シンプルなコンパイラ関数プラグイン

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     compiler.tplheader.php
 * Type:     compiler
 * Name:     tplheader
 * Purpose:  ソースファイル名とそれがコンパイルされた時間を含む
 *           ヘッダを出力する
 * -------------------------------------------------------------
 */
function smarty_compiler_tplheader($tag_arg, &$smarty)
{
    return 
"\necho '" $smarty->_current_file " compiled at " date('Y-m-d H:M'). "';";
}
?>

この関数はテンプレートから次のように呼ばれます。

{* この関数はコンパイル時にのみ呼び出されます *}
{tplheader}

コンパイルされたテンプレートの結果として生じるPHPコードは次のようになります。

<?php
echo 'index.tpl compiled at 2002-02-20 20:02';
?>

register_compiler_function() および unregister_compiler_function() も参照してください。



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報