2014年5月20日火曜日

JavaScript中にSmartyの変数を使う際のデリミタ設定

テンプレートファイルの中にJavascriptを書いていて、PHPの変数を使いたいとき
JavaScriptの「{ }」と被るため


{literal}
function hoge() {
{/literal}
 window.alert({$hogehoge});
{literal}
}
{/literal}

のように書かなくてはならず、ソースが見にくくなってしまいました。

Smarty.class.php
$smarty->left_delimiter = '<{';
$smarty->right_delimiter = '}>';

のようにデミリタを設定すると、

function hoge() {
 window.alert(<{$hogehoge}>);
}

のようにシンプルに書くことができます。

2014年5月13日火曜日

DateTimeによる日付の差の表示


DateTime::diff()を用いることで日付の差を表すDateIntervalオブジェクトを返します。
失敗した場合にはFALSEを返します。

<?php
$datetime1 
= new DateTime('2014-05-11');$datetime2 = new DateTime('2014-05-13');$interval $datetime1->diff($datetime2);
echo 
$interval->format('%a');?>


上を実行すると「2」が出力されます。
また、PHPのDateTimeオブジェクトは比較演算子で比較することもできます。
<?php
$datetime1 
= new DateTime('2014-05-11');$datetime2 = new DateTime('2014-05-13');var_dump($datetime1 < $datetime2); //true?>