【发布时间】:2015-05-21 00:07:52
【问题描述】:
使用 PHP 的 ob_start($callback),您可以像这样将静态方法作为回调传递:
class TemplateRenderer {
function myCallback($bufferContents) {
return 'Foobar instead of the buffer';
}
}
ob_start(array('TemplateRenderer', 'myCallback'));
或者你可以像这样引用一个对象:
$myTemplateRenderer = new TemplateRenderer();
ob_start(array($myTemplateRenderer, 'myCallback'));
这两种方法都可以,但我想知道是否可以从类方法中启动输出缓冲区,并使用 $this 引用回调
class TemplateRenderer {
function myCallback($bufferContents) {
return 'Foobar instead of the buffer';
}
function init() {
// --- this doesn't work ----
ob_start(array($this, 'myCallback'));
// --- this doesn't work either ----
ob_start(array('this', 'myCallback'));
}
}
TemplateRenderer::init();
如果可能的话,从它自己的类中引用“可调用”的语法是什么?
【问题讨论】:
-
使用
TemplateRenderer::init()调用函数时,$this应该是什么?$this仅在您使用$object->method()语法时设置。
标签: php output-buffering ob-start