如何在类中启动ob_start?

时间:2010-10-15 09:09:31

标签: php ob-start

我正在做一些关于从PHP最小化html的研究。像

class themeing
{
    function render( $file, $folder )
    {
        if ( COMPRESS ) {
            // this is the problem
            ob_start('compressor'); 
        }

        $get = VIEWS . $folder . '/' . $file . '.phtml';

        if ( COMPRESS ) {
            ob_end_flush();
        }

        return $get;
    }

    function compressor($buffer)
    {
        $search = array(
            '/<!--(.|\s)*?-->/',
            '/\>[^\S ]+/s',
            '/[^\S ]+\</s',
            '/(\s)+/s'
        );
        $replace = array(
            '',
            '>',
            '<',
            '\\1'
        );

        $buffer = preg_replace($search, $replace, $buffer);
        return $buffer;
    }
}

问题是如何调用此ob_start(函数)?我们可以像ob_start($ this-&gt; compresssor())那样做吗? (好吧,我知道它失败了)在课堂上?谁?

感谢您的关注。

Adam Ramadhan

2 个答案:

答案 0 :(得分:14)

ob_start(array($this,'compressor'))

PHP使用array(instance,function) representation将类的成员函数表示为可调用函数。

答案 1 :(得分:0)

如果你有一个静态方法,它可以像这样访问:

ob_start(array(get_called_class(),'compressor'))