SimpleViewのヘルパメソッド?

http://d.hatena.ne.jp/bobchin/20060214/1139891484
SimpleViewでは、アクションクラスのプロパティの値にhtmlspecialcharsを適用した値が$h配列に格納されるようになっています。
なので、ビューで

<?php echo $h['prop_name'];?>

のようにできます。
が、アクションクラス以外の値は格納されないので、例えばエラー表示の場合は
htmlspecialcharsのエイリアス関数hを使用する必要があります。

<?php foreach ($errorList->getAllMessages() as $message) { ?>
<?php echo h($message); ?><br/>
<?php } ?>

これが微妙に間違えやすいんじゃないかと・・・。


なので、全部h関数でアクセスするようにして、アクションにプロパティ名がある場合はそっちを表示するというのはどうだろうか?
もちろんバッティングする場合が考えられるけど・・・

<?php echo h('prop_name');?>
<?php foreach ($errorList->getAllMessages() as $message) { ?>
<?php echo h($message); ?><br/>
<?php } ?>
Filter_SimpleView.class.php

_postFilter()内
 〜〜〜〜〜〜
  // 追加 アクションのプロパティを関数に登録しておく
  h('', false, $action);

  ob_start();
  include_once($template);
  $result = ob_get_contents();
  ob_end_clean();
 〜〜〜〜〜〜
}

function h($str, $ref = true, $action = null)
{
    static $props;
    
    if (isset($action) && is_object($action)) {
        $props = get_object_vars($action);
        return;
    }
    if ($ref) {
        if (isset($props) && array_key_exists($str, $props) && is_string($props[$str])) {
            $str = $props[$str];
        }
    }
    return htmlspecialchars($str, ENT_QUOTES);
}