使用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();
如果它甚至可能,那么引用"可调用"的语法是什么?来自自己的班级?
答案 0 :(得分:2)
我会遵循Barmar的建议,但如果你因为某种原因不想进行实例化,你可以尝试这个解决方案:
class TemplateRenderer {
static function myCallback($bufferContents) {
return 'Foobar instead of the buffer';
}
function init() {
ob_start(array('self', 'myCallback'));
}
}
TemplateRenderer::init();
答案 1 :(得分:1)
您需要使用对象调用init()
,以便设置$this
。
$myTemplateRenderer = new TemplateRenderer();
$myTemplateRenderer->init();