我有一个脚本,在显示内容之前运行自定义电子邮件混淆类的Obfuscate()
函数,如下所示:
ob_start(array($obfuscator, "Obfuscate"));
include('header.php');
print($html);
include('footer.php');
ob_end_flush();
这一切都很好。然而,我已经完全重写了我的视图架构,所以我需要从类函数内运行电子邮件混淆并返回该字符串(然后得到echo
ed)。我最初将上面的内容重写为:
ob_start(array($this->obfuscator, "Obfuscate"));
include('header.php');
echo($this->content);
include('footer.php');
$wrappedContent = ob_get_contents();
ob_end_clean();
不幸的是,$this->obfuscator->Obfuscate()
回调没有被触发。此后,我了解到ob_get_contents()
不会触发回调,但尝试了ob_get_clean()
&ob_get_flush()
也无济于事。
那么,我如何在回调被触发后获得缓冲区的内容呢?
当然,我忽略了这样一个事实,即在ob_start()
上使用回调的唯一原因是我想在内容刷新之前运行Obfuscate()
,但是如果我得到该内容,我不需要运行回调!所以,不使用回调,只是通过Obfuscate()
运行ob_get_clean()
的结果做了我想要的。哎!
ob_start();
include('header.php');
echo($this->content);
include('footer.php');
return $this->obfuscator->Obfuscate(ob_get_clean());
变化
ob_end_clean();
ob_clean()
将触发。
这是代码,例如I tried
<?php
class Obfuscate {
public function __construct()
{
}
public function getObfuscate()
{
return "obfuscate";
}
}
class Example
{
public function hello( $obfuscator )
{
ob_start(array( $obfuscator, 'getObfuscate' ));
include('header.php');
echo "Thi is a content ";
include('footer.php');
$wrappedContent = ob_get_contents();
ob_clean();
}
}
$obfuscator = new Obfuscate();
$example = new Example;
$example->hello($obfuscator);
ob_clean();