php返回混合数据类型 - 好的或坏的

dav*_*vid 15 php

在php中返回值时,返回混合数据类型被认为是好的还是坏的做法.我正在开展一个项目,我经常遇到返回id号码的方法null.我null通过检查null和返回来处理该值,-1如果是的话null.

我发现自己的另一种情况是方法应该做什么并返回一个字符串.但有时候不能返回字符串,因为它没有找到或发生异常.这里最好的事情是什么?返回像'failed'之类的字符串?然后,这会在方法之间创建一个字符串耦合,因为调用方法必须确切地知道要检查的字符串失败消息?

编辑:好的,已经有一些不同的意见.我喜欢在失败时返回false的想法和实际结果,无论数据类型是成功的.但是......在这方面有什么最佳实践吗?我的意思是,在这些情况下,其他语言的程序员会做什么,例如java和c ++等?

Roc*_*mat 8

我通常做的是如果方法工作,返回值,如果失败则返回FALSE.这就是PHP的许多内置方法所做的事情.那么,你可以检查函数是否返回FALSE.


Sli*_*liq 6

返回混合类型是很糟糕的,至少在 2013 年的今天是这样。繁荣!解决的方法是将其拆分:

BAD,混合返回类型样式:

function checkResult($data)
{
    if ($data) {
        ...
        return $stuff;
    } else {
        return false;
    } 
}
Run Code Online (Sandbox Code Playgroud)

人们需要额外的逻辑来工作 checkRsult(),并且他们永远不知道到底会返回什么类型。

好,明确固定的返回类型样式:

也许这个例子不太好,但它展示了要走的路。

function doesResultExist($data)
{
    if ($data) {
        return true;
    }
    // default return
    return false;
}

function getResultData()
{
    ...
    return $stuff;   
}
Run Code Online (Sandbox Code Playgroud)


Sjo*_*erd 5

Null是一个相当常见的返回值,表示没有返回值.如果函数想要根本不返回任何ID,则应返回null(不是"失败"或-1).

如果是特殊的,一个ID没有被发现,你应该抛出一个异常.