我理解这个主题已被简要介绍here但我希望了解在PHP中使用多种返回类型的一般做法和不做。 关于PHP的这个功能似乎有不同的意见。
我倾向于同意,正如上面链接的线程所指出的,对于错误,使用异常可能更合适;但是,如果函数返回两类有意义的值呢?例如,假设一个函数返回房子中所有关闭的灯(:)是的,我正在为它做好准备!)
基本上,这就是我想要传达的:如果没有达到基本条件,并且我没有看到前进和计算我的列表的一点,我返回一个布尔值。否则,请继续这样做:
public function getLightsThatAreOff($house)
{
// if $house itself does not have any power, return true
// else
//compile an array of lights that are off and return then
}
我认为上面提到的用例对于多种返回类型来说是一种甜蜜点。在任何一种情况下,如果有人提供了一套关于如何确定是否使用此功能的一般指导原则,我将不胜感激。
谢谢!
答案 0 :(得分:7)
即使记录良好,混合类型也不好。例如,如果一个方法返回一个数组,但没有什么可以返回,那么它应该是一个空数组,而不是false或其他任何东西。 即。
array()
答案 1 :(得分:0)
这实际上取决于您打算如何使用这些功能。即使您是大型开发团队的一员,只要您有效地记录代码,那么您应该能够安全地返回混合类型。如果你为自己开发,那么只要你知道如何以及在哪里使用你的功能,那就无所谓了。
我会说,从个人经验来看,每当你能减轻错误的可能性时,你应该这样做。意思是,如果函数的预期返回值是数组,则应该返回空数组而不是布尔值(false)。这样,即使有人没有阅读您的文档,最糟糕的情况是当他们尝试循环遍历数组时,没有任何反应,脚本会继续。如果您无法预见它会导致任何问题,我强烈建议您这样做,而不是简单地返回false。我甚至无法计算我听过多少次"你的数据库类已被破坏"如果查询失败,我返回false而不是结果数组。