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;
}

2 つの異なる戻り値があります。1 つはエラー コードで、もう 1 つはオブジェクトです。私は通常、この種のプログラミングに異議を唱えます。通常、結果のコードとコンテキストを別の安全に型付けされたクラスにカプセル化します...まだこれを行うかもしれませんが、これが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 と Programmers のどちらに適しているかどうかもわかりませんでした...

4

2 に答える 2

1

最初の関数は、2 番目のメソッドで示したように、LoginResult オブジェクトを返す必要があります。魔法の値をチェックするべきではありません。

ログイン結果

ブール値:isSuccessful

文字列:failureReason

UserToken:トークン

于 2013-10-05T05:50:34.850 に答える
0

一貫性があると言えます。return false失敗した場合と、すべてがうまくいった場合は 1 つのタイプのデータ (配列など) です。私にとって、アプリケーション全体で一貫性を保つことは非常に重要です。そのため、デフォルトでは、成功の場合 (通常はインライン アノテーションで何を期待するかについて言及されています) とfalse失敗の場合に、どのようなデータ型も期待します。

getterPSそれは何とかandsetterメソッドを使用するのと同じです。もちろん、それを使用する必要はありませんが、長期的にはアプリケーションをより強固なものにします。それはただの良い習慣です。

于 2013-10-05T06:00:52.077 に答える