PHP最佳实践:使用混合返回类型


PHP Best Practice: Using Mixed return types

我知道这个主题在这里简要地讨论了一下,但我希望了解在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
    }

我认为上面提到的用例是多种返回类型的最佳选择。无论哪种情况,如果有人能提供一套通用的指导方针,告诉我如何决定是否使用这个功能,我将不胜感激。

谢谢!

混合类型不是很好,即使文档很好。例如,如果一个方法返回一个数组,但没有任何东西可返回,那么它应该是一个空数组,而不是false或其他任何东西。例如

array()

这实际上取决于您打算如何使用这些函数。即使您是大型开发团队的一员,只要您有效地记录了代码,那么您应该能够安全地返回混合类型。如果你是为自己开发的,那么这真的无关紧要,只要你知道如何以及在哪里使用你的函数。

根据我的个人经验,我要说的是,只要你能减少出错的可能性,你就应该这样做。也就是说,如果一个函数的预期返回值是一个数组,你可能应该返回一个空数组而不是一个布尔值(false)。这样,即使有人没有阅读您的文档,可能发生的最坏情况是,当他们试图遍历数组时,什么也没有发生,脚本继续运行。如果您不能预见它会导致任何问题,我强烈建议您这样做,而不是简单地返回false。如果查询失败,当我返回false而不是结果数组时,我甚至数不清有多少次听到"您的数据库类已损坏"。