1

ユーザー情報を返すためのベスト プラクティス

気になるたびに。特にOOPで情報(ログイン成功、記事の更新)をユーザーに返す方法..(PHP)

  • 複数の catch および try ブロックを使用して新しい例外をスローします (catch の後、catch ブロックの実行を停止します)
  • たくさんの戻り値(見た目が悪いだけ)
  • true と false (次に、クラスを実行するスクリプトで true と false をチェックしますか?)
  • エラーメッセージを処理するための分離されたクラス(例外を拡張しますか?)

ヒントをいただければ幸いです。

-- 更新 / あまり多くの回答を期待していません! おお!!

たとえば、ユーザー登録。カスタム例外クラスを使用しました。

/*
 * custom exception class
 */
class Message extends Exception
{
    public function __construct($message, $code = true) 
    {       
        parent::__construct($message, $code);
    }

    public function information() 
    {
        return '<div class="check"><img src="/admin/static/images/'.($this->code == true ? 'good' : 'bad').'.gif" alt="check" class="icon" width="20px" height="20px" />' . $this->message . '</div>';
    }
}

そしてクラス自体で。

    if(is_numeric($id) === false)
    {
        Throw new Message('message', false);
    }
4

1 に答える 1

2

複数の catch および try ブロックを使用して新しい例外をスローします (catch の後、catch ブロックの実行を停止します)

例外はコストがかかる可能性があり、例外は通常、cURL エラーなどのアプリ自体の問題を示します。ユーザーが間違いを犯したり、正しくログインしていないなどの単純な問題ではありません。私はあなたのアプリの実際の問題を例外とし、あなただけに報告します。

たくさんの戻り値(見た目が悪いだけ)

これらの戻り値をどのように行うかによって異なります。PHP フレームワークがどのように機能するかを調べてください。

  • コードイグナイター
  • イーイ
  • CakePHP
  • ゼンド
  • リチウム

特に (これを行う良い方法) は、Yii 独自のユーザー用ログイン ハンドラーです: http://www.yiiframework.com/doc/api/1.1/CUserIdentity

クラスベースのエラーコードとメッセージがあることに気付くでしょう。

これらのフレームワークの多くは、フォームにモデル/コントローラー ベースのパターンを使用していることがわかります。つまり、一連の検証ルールを定義し (Yii のように、ユーザーのログインに対しても、認証がクラス ベースであることが多い)、これらの検証ルールが実行されます。これらのルールに付随するエラー メッセージを埋めます。最終的に次のような配列になります。

array{
    'username' => 'Username was empty',
    'password' => array(
        // More errors
    )
}

これは、すべての戻り値を示します。フィールドごとのエラーであり、ループ内で簡単に取得して操作できるため、きれいです。

ユーザーを実際に何度もログインするには、次の行に沿って何かを実行します。

if($user->authenticate()){
    // redirect to member page
}else{
    return $user->getErrors();
}

そして、これの戻り値は通常、上記のフォームのようなものになります。

true と false (次に、クラスを実行するスクリプトで true と false をチェックしますか?)

複数のエラーに関しては、真と偽は非常にあいまいです。たとえば、ユーザーはログインしますが、アカウントが削除または禁止される可能性があります。ブール値だけでどのように違いがわかりますか?

リチウムのような他の人/フレームワーク(たとえば)は、検証関数ごとにブール値を返し、エラーメッセージホルダーに添付されます。

他の多くの人が言うように、道はあなたの特定の状況に帰着します.

于 2012-08-17T21:50:08.207 に答える