gpt4 book ai didi

php - PHP 中的错误处理

转载 作者:可可西里 更新时间:2023-10-31 23:35:18 25 4
gpt4 key购买 nike

我们正在构建一个基于 Good old codeigniter 框架的 PHP 应用程序,并且遇到了由多个模型调用组成的大量链式操作的问题,这些操作一起构成了对数据库的大事务的一部分。

我们希望能够执行一系列操作并从函数返回每个操作的状态报告,无论结果如何。

我们最初的想法是利用 PHP5 的异常,但由于我们还需要不中断脚本执行的状态消息,这就是我们想出的解决方案。

它有点像这样:

$sku = $this->addSku( $name );

if ($sku === false) {
$status[] = 'Something gone terrible wrong';
$this->db->trans_rollback();
return $status;
}

$image= $this->addImage( $filename);

if ($image=== false) {
$error[] = 'Image could not be uploaded, check filesize';
$this->db->trans_rollback();
return $status;
}

我们的 Controller 看起来像这样:

$var = $this->products->addProductGroup($array);

if (is_array($var)) {

foreach ($var as $error) {
echo $error . '<br />';
}

}

它看起来是一个非常脆弱的解决方案,无法满足我们的需求,但与纯 PHP 异常相比,它既不具有可扩展性,也不有效。

这真的是基于 MVC 的应用程序通常处理这类事情的方式吗?

谢谢!

更新:进行了大量谷歌搜索并找到了这个 PHP 函数:register_shutdown_function。会不会是我们要找的东西?我不知道,也无法让它按照我们想要的方式工作......引用:http://php.net/manual/de/function.register-shutdown-function.php

最佳答案

您可以在 PHP 中设置自定义异常处理程序 - http://php.net/manual/en/function.set-exception-handler.php

这将允许脚本继续执行。您可以创建一个将状态记录到数据库中的函数。另一个函数和/或类可以获取这些以更新当前状态报告。如果您抛出自定义异常,即抛出 StatusException,您的自定义处理程序可以选择异常类型并适本地记录它,同时为其他标准异常执行默认操作...

除了使用数据库,您还可以使用异常处理程序将信息存储到 session 对象等中,以便稍后仅针对当前 session 进行引用。

如果使用异常处理程序是正确的,我仍然不确定,因为我对您要尝试做的事情仍然有点模糊,但我的方法将允许在处理异常时继续执行代码。

关于php - PHP 中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2733242/

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