1

我正在使用 PHP 的 Codeigniter 来构建我的应用程序,有时我觉得自己被错误处理淹没了。我在任何可能失败的地方添加“故障保险”。这里有些例子:

在模型中:

  1. 如果未提供所有模型方法参数,则返回 false
  2. 对于每一个mysql查询,如果查询失败,返回false
  3. 根据情况,如果查询的行数 < 1(它必须是 > 0),则返回 false

在控制器中:

  1. 如果控制器方法缺少必需的参数,则返回 false
  2. 如果调用的模型返回 false,则重定向并显示错误消息,或显示错误视图

我想知道的是,我做得过火了吗?我觉得可能没有必要测试每个 mysql 查询,但话又说回来,如果其中一个确实因某种原因而中断,则脚本的其余部分将失败或给用户带来麻烦。

最后,在上述所有错误处理阶段中,哪些地方适合将错误记录到文件中?

4

1 回答 1

0

如果你在一个函数中有这么多的返回值,那么你的代码结构很差。那,如果您正在运行原始 SQL 查询,除非您正在访问元数据,否则您最好将其移交给模型(CI 拥有的东西)。

对于您的方法,请考虑类型提示。写成这样的东西:

 function FunctionNameHere($user, $id, $test) {
 }

考虑传入一个对象可能会更好地编写User,这样您就可以这样做:

 function FunctionNameHere(User $user, $test) {
 }

哪个会为您完成所有“不正确的参数集”验证,并会引发错误。

对于 SQL 查询,请考虑使用模型,这将允许您再次检索对象。没有对象?NULL被退回。问题解决了。

与其返回整数值,不如考虑抛出Exceptions(不要害怕扩展Exception类,这样您就可以在不同的块中捕获不同的异常!)。这将允许您在代码中巧妙地包装一些常见的错误情况(例如向用户抛出一个华丽的错误框。使用异常完成了吗?检查)。

于 2013-05-28T18:37:36.950 回答