PHPで配列を定数定義→assignしないでSmartyで取得する荒業できたよー

PHPではdefineで配列が使えないので、定数として配列を使いたいときは

という方法があるかと思います。
が、上記の方法を使った場合、基本はPHP側で$smarty->assignしなければなりません。defineで定義した定数なら$smarty.constで一発なのに…。かといって{php}コードを使う方法は何かに負けた気がします。

そこで、ネットをさまよったところ、配列をシリアライズしてdefineで定義→Smarty側でアンシリアライズして利用、という方法を発見しました。

PHP

define("CONF_ARRAY" => serialize(
  array('foo' => 'ふー', 'bar' => 'ばー', 'baz' => 'ばず')
));

Smarty

{assign var=CONF_ARRAY value=$smarty.const.CONF_ARRAY|unserialize}
{$CONF_ARRAY|@debug_print_var}

 

[参考]