最佳实践null, false或??如果从DB中提取对象时没有找到匹配的行


Best practice null, false or ??? if no matching row is found when pulling an object from a DB?

我正在使用PDO为对象构建一个模型,中间没有ORM。我们稍后可以讨论为什么我不使用ORM。

我有一些静态方法,如getById()和getByName(),如果数据库中存在模型对象,则实例化并返回模型对象。

我的问题:我应该返回什么,是"道德正确",如果行不存在于数据库中?由于这是一个项目上的新代码,没有任何好的指导方针,我可以返回(并稍后检查)false或null…或者理论上是别的什么。我宁愿不做的是在我的代码中使用is_object()检查,我可以使用===。

如果我准备的SELECT语句execute()返回false,我已经抛出一个异常。如果没有找到对象,我想我也可以抛出一个异常,但我不知道ORM实际上是这样做的。

提前感谢,并让任何可能开始的圣战这样做!

我将返回null,它满足您的所有条件。

它是假的,所以一个简单的if是一个测试,看看资产是否被检索将工作

if ($user) 

对'=== null'的测试清楚地表明了测试的意义。

if ($user === null) 

和null在我看来在语义上比false更正确。您从调用中得到一个null结果,而不是一个false结果。