My Photo

« 2014春アニメ感想&夏アニメ視聴予定 | Main | .htaccessでBASIC認証 »

July 08, 2014

PHPメモ039:Smartyで独自の修飾子を定義する

独自のテンプレート関数や修飾子の定義する場合、プラグインディレクトリにプラグインファイルを置くならばプラグインファイル名やプラグイン関数名は命名規約に従う必要がある。しかし、registerPlugin() を使えばファイル名も関数名も自由に付けることができる。

例として時間をアメリカの太平洋側のタイムゾーン(PST:Pacific Standard Time/PDT:Pacific Daylight Time)で表示する独自の修飾子を定義する。
まず、修飾子の処理を行う関数を定義する。

<?php
define("TIMEZONE_LA","America/Los_Angeles");

/**
 * PST/PDTで日時をフォーマットして返す。
 */
function date_format_in_pst_pdt($str_dt, $format = 'Y-m-d H:i:sO(T)') {
	
	$dt = new DateTime($str_dt);
	$str_tz = TIMEZONE_LA;
	$tz = new DateTimeZone($str_tz);
	$dt->setTimezone($tz);
	
	return $dt->format($format);
}
?>

そして、上で定義した関数を registerPlugin() でプラグインとして登録する。
この例では登録するプラグインは修飾子なので第1引数 type は 'modifier'、第2引数 name は修飾子の名前で、第3引数 callback は関数名。

include './date_format_in_pst_pdt.php';
$smarty->registerPlugin('modifier', 'date_format_in_pst_pdt', 'date_format_in_pst_pdt');

登録された独自の修飾子は以下のように使うことが出来る。

now formatted:{$smarty.now|date_format:'%Y/%m/%d %H:%M:%S'}<br />
now formatted in PDT/PST:{$smarty.now|date_format:'%Y/%m/%d %H:%M:%S'|date_format_in_pst_pdt}<br />
now formatted in PDT/PST:{$smarty.now|date_format:'%Y/%m/%d %H:%M:%S'|date_format_in_pst_pdt:'Y-m-d H:iO'}<br />
'2014-01-08 10:03:45' formatted in PDT/PST:{'2014-01-08 10:03:45'|date_format_in_pst_pdt}<br />
'2014-01-08 10:03:45' formatted in PDT/PST:{'2014-01-08 10:03:45'|date_format_in_pst_pdt:'Y-m-d H:iO'}<br />

出力は以下のようになる。

now formatted:2014/07/08 10:15:36<br />
now formatted in PDT/PST:2014-07-07 18:15:36-0700(PDT)<br />
now formatted in PDT/PST:2014-07-07 18:15-0700<br />
'2014-01-08 10:03:45' formatted in PDT/PST:2014-01-07 17:03:45-0800(PST)<br />
'2014-01-08 10:03:45' formatted in PDT/PST:2014-01-07 17:03-0800<br />

1行目は date_format で出力している。つまりデフォルトのタイムゾーン(Asia/Tokyo)での出力。
2行目以降は date_format_in_pst_pdt で出力している。JSTとPDTとの差は16時間、PSTとの差は17時間。独自の修飾子 date_format_in_pst_pdt を使用した出力は期待した内容となっている。

参考ページ:
Chapter 16. プラグインによる Smarty の拡張 | Smarty
修飾子プラグイン | Smarty

« 2014春アニメ感想&夏アニメ視聴予定 | Main | .htaccessでBASIC認証 »

PHP」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/59950561

Listed below are links to weblogs that reference PHPメモ039:Smartyで独自の修飾子を定義する:

« 2014春アニメ感想&夏アニメ視聴予定 | Main | .htaccessでBASIC認証 »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof