在 PHP 中使用多个唯一返回值是否合理或常见


Is it reasonable or common to use multiple unique return values in PHP?

我有一个函数:

public static function loginUser($username, $password)
{
    ...
    //if no record was found where the username was matched
    //then we fail the login request
    if(!isset($record)) return Login::FAILURE_INCORRECT_USERNAME_OR_PASSWORD;
    ...
    //create a new user token object
    $userToken = new UserToken();
    ...
    //give the token back to the caller
    return $userToken;
}

有两个不同的返回值;一个是错误代码,另一个是对象。我通常对这种类型的编程提出异议;通常我会将结果代码和上下文封装到另一个安全类型的类中......我可能还会这样做,但我很好奇这在 PHP 中是否合理或常见。

以下是我处理电话的方式:

public static function handleLoginRequest($request)
{
    $result = new LoginResult();
    $token = Login::loginUser($request->Username, $request->Password);
    if($token === Login::FAILURE_INCORRECT_USERNAME_OR_PASSWORD) 
    {
        $result->FailureReason = $token;
        $result->Successful = False;
        return $result;
    }
    //give the token back in the result
    $result->UserToken = $token;
    $result->Successful = True;
    //return the result
    return $result;
}

我也不确定这是否更适合StackOverflow或程序员......

第一个函数应返回一个 LoginResult 对象,如您在第二个方法中指示的那样。你不应该检查魔术值,它应该沿着

登录结果

布尔值:是成功的

字符串:失败原因

用户令牌:令牌

我会

说保持一致:return false在发生故障的情况下,如果一切顺利,则使用一种类型的数据(例如 Array)。对我来说,保持整个应用程序的一致性非常重要。因此,默认情况下,我希望在成功的情况下使用任何数据类型(通常在预期内容的内联注释中提到),并在失败的情况下false

附言这在某种程度上与使用gettersetter方法相同。当然,您不必使用它,但从长远来看,它会使您的应用程序更加可靠。这只是一个好的做法。