public function catchBlock($buf_name) { /*******************************************************\ * Next check isn't correct due to php5.2 will generate * ParseError on anonymous function definition * I just leave this code here for some time \*******************************************************/ #if (version_compare(PHP_VERSION, '5.3.0') >= 0) { # ob_start(function ($buffer_val) use($buf_name){ # if(!array_key_exists($buf_name, Templater::$bufs)){ # Templater::$bufs[$buf_name] = array(); # } # array_push(Templater::$bufs[$buf_name], $buffer_val); # return $buffer_val; # }); #} #else{ // this variant for php < 5.3.0 // my production still use 5.2 ((( // this variant don't support nesting catching self::$cur_buf_name = $buf_name; function handler($buffer_val) { if (!array_key_exists(Templater::$cur_buf_name, Templater::$bufs)) { Templater::$bufs[Templater::$cur_buf_name] = array(); } array_push(Templater::$bufs[Templater::$cur_buf_name], $buffer_val); return $buffer_val; } ob_start('handler'); #} }