类中的PHP ob_start回调函数有问题

类中的PHP ob_start回调函数有问题,php,Php,我在类中使用ob\u start回调函数时遇到了一些问题。在搜索网页时,我发现了如何做到这一点!所以我记下了它的语法,但我遇到了一个新问题,我无法在谷歌上找到解决方案 所以我有一个标题类, header类中与此问题相关的方法如下所示: nameBlock() callback($buffer) startHeaders() 在startHeaders()方法的开头,我调用ob_start() 以下是它正在调用的回调方法: function callback($buffer){ $buf

我在类中使用
ob\u start
回调函数时遇到了一些问题。在搜索网页时,我发现了如何做到这一点!所以我记下了它的语法,但我遇到了一个新问题,我无法在谷歌上找到解决方案

所以我有一个标题类, header类中与此问题相关的方法如下所示:

nameBlock()
callback($buffer)
startHeaders()
在startHeaders()方法的开头,我调用ob_start()

以下是它正在调用的回调方法:

function callback($buffer){
    $buffer = str_replace("<!!>nameBlock<!!>", $this->nameBlock(), $buffer);
    return $buffer;
}
函数回调($buffer){
$buffer=str_replace(“nameBlock”,$this->nameBlock(),$buffer);
返回$buffer;
}

出于我不知道的原因,它并没有看到它自己的带有“$this->”的方法。

您可以试试这个

ob_start(function($buffer) use ($this) {
    // code here....
});
第一个参数应该是可调用的,而不是数组。

(代表OP发布)

我在打字的时候发现了这个问题

方法:

nameBlock()
正在打印内容

print "X";
当它应该归还的时候

return "X";

如果在正确的上下文中使用(在包含名为
callback
的方法的类的方法中),
array('this,'callback')
是一个。在类中不起作用,我尝试并得到一个错误,致命错误:无法在第147行的/../header.php中将$this用作词法变量。尽管如axiac所述,数组是从类内部接受的。我从中获得了数组帮助。我查看了该链接,看起来数组需要接受
array('className','callBackMethodName')
我还做了进一步的阅读,并且lambda应该已经有了
$this
可以从类中访问(假设为PHP5.4)。如果您使用我拥有的,但删除
使用($this)
部分,它将起作用。但至少在我看来,这比数组更清楚。实际上,转到PHP7,这与转换无关,只是一些需要改进的地方。不管怎样,我没有使用($this)就尝试了,它确实起了作用,但是我更喜欢数组调用,我认为使用它自己的方法看起来更干净。不过,谢谢你:)。
return "X";