Smartyで配列を定義するプラグイン

Smartyでは、テンプレート内で

{assign var="変数名" value="変数の内容"}

と書くことで変数を定義できますが、配列の定義はphp側でしかできません。そこで、普段使ってる配列定義のプラグインをご紹介。

<?php
/**
 * Smarty plugin {assign_array}
 *
 * usage: {assign_array var="var" values="val1[,val2,val3...]" [separator=","]}
 *
 * テンプレート内で配列を定義するSmartyプラグイン。
 * 変数varに配列を格納する。配列の値はvaluesにカンマ区切りで記述する。
 * separatorを指定することで、カンマ以外の文字を区切り文字に指定できる。
 *
 * @package   Lism::Plugins
 * @version   $Id: function.assign_array.php 3 2007-04-06 04:08:59Z Ryo Miyake $
 * @copyright 2006-2007 Lism.in
 * @author    Ryo Miyake <ryo.studiom@gmail.com>
 */

/**
 * assign_array
 *
 * @param  array   $value   引数のハッシュ
 * @param  object  &$smarty Smartyオブジェクト
 * @return void
 */
function smarty_function_assign_array($value, &$smarty)
{
    if (!isset($value['var']) || !isset($value['values'])) return;
    $separator = (isset($value['separator'])) ? $value['separator'] : ',';
    $smarty->assign($value['var'], explode($separator, $value['values']));
}
{assign_array var="fruits" values="apple,banana,orange"}

てな感じで、varに変数名、valuesにカンマ区切りで値を入れます。valueじゃなくてvalues。
separatorを指定すると区切り文字をカンマ以外に設定できるので、カンマを値に含めたい時もOK。

実は、公式のプラグイン集にも同じようなのがあるのに後から気付いたんだけど、あんまり実装が好みじゃなかったのでよしとする。