在PHP中使用多个唯一返回值是合理的还是常见的?

时间:2013-10-05 05:41:16

标签: 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或程序员......

2 个答案:

答案 0 :(得分:1)

第一个函数应该返回一个LoginResult对象,就像你在第二个方法中指出的那样。你不应该检查魔术值,它应该是

LoginResult

布尔:isSuccessful

字符串:failureReason

UserToken:令牌

答案 1 :(得分:0)

我说要保持一致:return false如果失败,一种数据如果一切顺利(例如数组)。对我来说,保持整个应用程序的一致性非常重要。所以,默认情况下,我希望在成功的情况下(通常在内联注释中提到的数据类型)和失败的情况下false

P.S。它与使用gettersetter方法有些相同。当然,您不必使用它,但从长远来看,它将使您的应用程序更加可靠。这只是一个很好的做法。