类中的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";