is_cached() (Smarty クラスメソッド) - PHPプロ!マニュアル

Smartyマニュアル

Smarty クラスメソッド - is_cached()

is_cached()

is_cached() -- テンプレートが有効なキャッシュを持つ場合にtrueを返します。

説明

bool is_cached ( string template [, string cache_id [, string compile_id]])

  • これは、 $cachingTRUE の場合にのみ機能します。 キャッシュの項 も参照してください。

  • 1つのテンプレートに 複数のキャッシュ が存在する場合は、第2パラメータに $cache_id を渡すことができます。

  • 第3パラメータに $compile id を渡すを渡す事が出来ます。このパラメータを省いた時は、もし永続的な $compile_id が設定されていればそれを使用します。

  • $cache_id は渡さずに $compile_id だけを渡したい場合は、 $cache_idNULL を指定します。

テクニカルノート: is_cached()TRUE を返すと、 実際にはキャッシュされた出力が読み込まれ、内部に格納されます。続いてコールされる display() または fetch() はこの内部に格納された出力を返し、キャッシュファイルを再読み込みしようとはしません。 これにより、上の例における is_cached() のコールから display() のコールまでの間に 別のプロセスがキャッシュをクリアしてしまうといった競合を防ぐことができます。これは、 is_cached()TRUE を返した後は clear_cache() やその他キャッシュ設定の変更が何の影響も及ぼさないということも意味します。

例 13-1. is_cached()

<?php
$smarty
->caching true;

if(!
$smarty->is_cached('index.tpl')) {
// ここでデータベースを呼び出し、値を割り当てます
}

$smarty->display('index.tpl');
?>

例 13-2. 複数のキャッシュを使用したテンプレートにおける is_cached()

<?php
$smarty
->caching true;

if(!
$smarty->is_cached('index.tpl''FrontPage')) {
  
// ここでデータベースを呼び出し、値を割り当てます
}

$smarty->display('index.tpl''FrontPage');
?>

clear_cache()clear_all_cache() および キャッシュの項 も参照してください。



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

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