Smarty outputfilter 文字化け

Smartyを自作クラスに組み込む過程のメモ

  • MyKlass::getKlass()でFoo(Smartyにあたる)をnewして$obj->registerでアウトプットフィルター相当を登録する。$obj->call()で呼び出し。(実際には$smarty->display()メソッドに組み込まれているので意識する必要はない)
  • PHPのスコープいまいち分からん。call_user_funcとかって邪道なのかな?
  • 関連記事
<?php
class Foo{
	var $filter = array();
	function register($function_name){
		$this->filter['callback'] = $function_name;
	}
	function call(){
		foreach($this->filter as $func){
			call_user_func($func, 'TEST');
		}
	}
}
class MyKlass{
	function getKlass(){
		function myfunc($arg1){
			print $arg1."myfuncdayo<br>";
		}
		return new Foo;
	}
}

$obj = MyKlass::getKlass();
$obj->register('myfunc');
$obj->call();

print "<pre>";
print_r($obj);
?>