我有一个函数:
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
。
附言这在某种程度上与使用getter
和setter
方法相同。当然,您不必使用它,但从长远来看,它会使您的应用程序更加可靠。这只是一个好的做法。