プラグインによる Smarty の拡張 - PHPプロ!マニュアル

Smartyマニュアル

- プラグインによる Smarty の拡張

第 16章プラグインによる Smarty の拡張

Smarty 2.0 から導入されたプラグインアーキテクチャにより、 Smarty のほとんど全ての機能がカスタマイズ可能になりました。 プラグインには次のものがあります。

  • テンプレート関数プラグイン
  • 修飾子プラグイン
  • ブロック関数プラグイン
  • コンパイラ関数プラグイン
  • プリフィルタプラグイン
  • ポストフィルタプラグイン
  • アウトプットフィルタプラグイン
  • リソースプラグイン
  • インサートプラグイン
リソースを除いて、register_* API によって関数を登録する古い方法の後方互換性はサポートされます。 API を使わずに、代わりに $custom_funcs , $custom_mods や その他のクラス変数を変更していたなら、 API を使用するか、行った拡張をプラグインに変換するようにスクリプトを調整する必要があります。

プラグインの動作原理

プラグインは要求があると常に読み込まれます。テンプレートから呼び出された 修飾子・関数・リソース等のプラグインだけが読み込まれます。 さらに各プラグインは同じリクエスト内に Smarty の異なるインスタンスが複数実行されていても、読み込まれるのは一度だけです。

プリフィルタ/ポストフィルタとアウトプットフィルタは少し特殊です。 これらはテンプレートから呼び出されないので、テンプレートが処理される前に API 関数を経由して明示的に登録または読み込まれる必要があります。 同じ種類の複数のフィルタが実行される順序は、それらが登録または読み込まれる順序によって決まります。

プラグインディレクトリ は、単一のパスを示す文字列または複数のパスを格納した配列でとなります。 プラグインのインストールは、単にプラグインファイルをいずれかのプラグインディレクトリ内に置くだけです。 そうすれば Smarty はそれを自動的に使用します。



Pick Up Q&A

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

>>続きを読む

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

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