PHP:错误处理 - 为真/假语句的数量构造代码的最佳方法?

时间:2012-06-03 13:27:11

标签: php if-statement error-handling structure

在文件的顶部,我想检查用户权限,例如如果登录,如果用户有权访问该页面,那么他们可以看到哪些内容,如果内容是由用户自己发布的,是否已通过所有必要参数(例如POST - vars)等。

所以,问题是,你会建议什么是最好的方法(代码仍然可读和可理解,对特殊页面来说不太具体,以便它可以在每个页面上实现,因为许多检查需要一个数据库查询等。)

我问的原因是,因为现在我正在做这样的事情:

if($logged_in!=1) {$error="err1";}

else {
    if(...) {...}
    else {...}
}

所以,基本上如果一个检查返回拒绝访问,代码将不会通过所有其他if但会立即中断。我不使用exitdie因为我确实要显示页面(没有内容而是错误框),所以如果我使用exitdie它会不显示以下任何其他代码...

你建议做什么?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

嗯,if / else构造往往是巨大的,并不是真正可读的。您可以考虑将Exceptions用于失败案例,基本上是:

<?php
try {

   if($logged_in!=1) {
      throw new Exception("You must be logged in");
   }

   if(!another_condition()) {
      throw new Exception("Another condition failed");
   }

   do_something();
}
catch (Exception $error) {
   display_error_page($error->getMessage());
}

一般来说,即使这不是最美丽的方式:这些情况本身就是面向对象需求的完美例子。

另见:

http://php.net/manual/en/language.oop5.php

http://php.net/manual/en/language.exceptions.php