1

我有一个功能:

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

4

2 回答 2

1

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

登录结果

布尔值:是成功的

字符串:失败原因

用户令牌:令牌

于 2013-10-05T05:50:34.850 回答
0

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

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

于 2013-10-05T06:00:52.077 回答