как запустить ob_start внутри класса? - PullRequest
3 голосов
/ 15 октября 2010

Я делаю небольшую исследовательскую работу по минимизации HTML от php.как

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-> compresssor ())?(хорошо, я знаю, что это не удается) внутри класса?Кто-нибудь ??

Спасибо, что заглянули.

Адам Рамадан

1 Ответ

14 голосов
/ 15 октября 2010
ob_start(array($this,'compressor'))

PHP использует представление массива (экземпляр, функция) для представления функций-членов классов как вызываемых функций.

...