【发布时间】:2019-04-13 17:36:04
【问题描述】:
我使用 PDO 编写了一个新的数据库类。我正在努力解决一个问题。我通常返回一个对象,所以我可以使用它。所以当查询失败时,我只返回$this。我有一个名为 wasSuccessful() 的方法,用于确保查询没有失败。
$result = $database->query(...);
if ($result->wasSuccessful()) {
// do code
}
但是,当方法返回false 时,我该怎么办?例如:
...
if (!$this->tableExists($table)) return false;
当这种情况发生时,PDO 告诉我我不能在布尔值上运行函数。我该如何以最好的方式解决这个问题?
提前非常感谢!
【问题讨论】:
-
你throw exceptions而不是返回false。
-
假设您的第二段代码是您的数据库类的一部分,并且鉴于您之前所说的,逻辑将指示
return $this;而不是return false;并使用...->wasSuccessful()来检查成功或失败.另一方面,检查布尔值并不困难。但是,一种方法不能同时使用两种返回机制,因为那样您将不知道如何检查它。也就是说,例外也很好。