GANCHIKU.com

Smartyのmodifierを使う際の注意について。

2006年3月13日
PHP

ちゅーわけで、前回、default_modifiersがいいんだぜ!てな感じで書いたわけだが、配列とかオブジェクトもそのままmodifierを当てはめようとして、エラーが出るじゃん。ダメダメじゃん。

ソースを追いかけてみると、Smarty_Compiler.class.phpで、default_modifiersの値を見ているみたい。で、pluginの中のソースを少しばかり読んでみる。

つか、Smartyいけてねー。
modifier_debug_print_var.php
modifier_strip.php
が第一引数がstringじゃないのね。まぁ、modifier_debug_print_var.phpは、配列やオブジェクトを渡して、その内容を出力するようなmodifierだからいいのだけど、modifier_strip.phpは、なぜかstringなのに、仮変数名がtextってなってる。こんなに普及しているライブラリなのに。。。ちなみにソースを見たのは、最近の2.6.13なんだけども。見てちょっとショック。

で、さーらーに、配列やオブジェクトにmodifierを使うことができるってのは、いいんだけど、escapeとかに書けちゃうんだよね。そして、当然のようにエラーが出るのだが、default_modifiersは、変数がstringだろうが、配列だろうが、オブジェクトだろうが同じように扱うので、配列とか指していると普通に使えない。
超いけてねー。

なんとかテンプレートファイルに出てくる変数をきれいに書きたいので、(そして、ちゃんとエスケープとかよろしくしてくれるように、)ちょいとばかしmodifiersの動作を書き換えちゃった。

まぁ、stringって書いてあるところにstringじゃなかったらそのまま返すっていう風に書き換えたの。とりあえず、これでいいけど、なんかキモいなぁ。他にいい方法ないかなぁ。

Shin Ohno 2003-2012