gpt4 book ai didi

php - 输出缓冲区错误处理

转载 作者:行者123 更新时间:2023-12-03 07:40:22 24 4
gpt4 key购买 nike

让我们假设一个简单的片段用于模板并且是 using output control (ob)

public function capture($file, array $args = array())
{
extract($args, EXTR_SKIP);

ob_start();

require $file; //'foo.php'

return ob_get_clean();
}

foo.php 有错误(由 error handlershutdown handler 处理)

<?php

echo "before";
echo $someVariable; //$someVariable is undefined here
echo "after";

输出

before <- would like to avoid
some message from the error handler

问题:是否有可能在出错时避免文件的任何输出?

是的,

最佳答案

如果您使用关闭处理程序而不是错误处理程序,它可以清除输出,因为错误处理程序只能清除它之前的输出,所以在它之后输出的任何内容仍然会呈现。

<?php

function error_handler()
{
if(error_get_last()) {
ob_get_clean();
echo 'An error has occured.';
}
}

register_shutdown_function('error_handler');

function capture()
{
ob_start();

require 'foo.php';

return ob_get_clean();
}

echo capture();

// foo.php
<?php

echo 'before';
echo $variable;
echo 'after';

?>

这只会输出“发生错误”。

但是使用 set_error_handler 它将输出 'An error has occurred.after' 除非你添加一个 DIE() 或类似于错误处理程序的东西。

关于php - 输出缓冲区错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com