我复制的课程中有些东西失败了。这不是我的班级,但失败的相关部分是:
class foo {
function process() {
ob_start( array( &$this, 'parseTemplate' ) );
}
function parseTemplate(){}
}
有谁知道ob_start
表达式应该做什么?在parse_template
的副本的上下文中调用&$this
方法? PHP版本为5.3.2-1
。我怀疑这个类的编码是5.0-5.2,它在5.3中断?或者它可能是别的什么?
答案 0 :(得分:4)
ob_start
的第一个参数是回调。
要了解这一点,您必须检查PHP的definition of callback。
具体来说,它说
实例化对象的方法是 作为包含一个数组的数组传递 索引0处的对象和方法名称 在索引1。
因此,当输出缓冲完成时,实际上这是调用$this->parseTemplate();
。
我不确定这里是否需要引用运算符&
。
答案 1 :(得分:2)
ob_start()
是输出缓冲,传入的参数应该是在使用ob_flush(),ob_clean()或类似函数刷新缓冲区时调用的回调。
// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
答案 2 :(得分:1)
如果不知道失败的输出是什么,我可以猜到两件事。
在版本5.3。*中,不需要引用实例,因此&$this
只需$this
。
另一件事是,就我所知,在任何缓冲输出之前需要调用ob_start ...
。