smartyで

$obj->method()

を呼べるのかと思って

{$obj->method()}

と書いたら普通に実行できた。


 
たとえばMVCなフレームワークでSmartyを実行しているとき、
コントローラーに

public function test()
{
    return 'テスト';
}

というメソッドを作っておく。
で、Smartyにコントローラーオブジェクトを渡しておいて、
($controllerにその参照が渡っているものとする)

{$controller->test()}

と記述すればコントローラーのメソッド「test」が実行され、
「テスト」と出力される。

返り値がHTMLとして出力されるようだ。

引数も問題なく渡せた。


 
が引数には落とし穴があった。

{$obj->method( 'test', 'test2' )}

などとすると、エラーが起きる。
引数中にかっこがあるとパースエラーが起きるらしい。
可読性は低くなるが、

{$obj->method('test','test2')}

と記述する必要がある。
 
まぁ、そもそもViewにそんなもん書いていいもんかという話だが、
便利なので、覚書。