私はばかげていますが、それでも重大な問題に遭遇しました。「サインアップ」のようなページの検証を作成しています。入力した値が有害でなく、自分のニーズに合っているかどうかを確認する必要があります。Fuelフレームワークのおかげで、それは十分に簡単です。次へ...ユーザー名または電子メールがまだ取得されていないことも確認する必要があります。私はその仕事をするメソッドを書きました。しかし、私の問題は、すべての「ifステートメント」を記述する必要があるときに発生します。
これは私が今まさに持っているものです。それが正しい方法かどうかはわかりません。私はそれをすべて「if」と多くのレベル(ネスト、私は推測する)で書くことができました。そこで「if/else..if」を使用できます。何を使いますか?
if ( $validation->run() === true ) {
if ( Diesel::usernameExists( $username ) === false ) {
$error = 'This username is already taken! Try again...';
}
if ( Diesel::emailExists( $email ) === false ) {
$error = 'This e-mail is already taken! Try again...';
}
if ( !isSet( $error ) ) {
Diesel::signUp( $username, sha1( $password ), $email );
Session::set_flash( 'notification', 'You have been successfully signed-up! Thanks...' );
Session::set_flash( 'location', 'sign-in' );
$this->response->redirect( 'notification' );
}
} else {
Session::set_flash( 'error', 'There was something wrong with validation! Try again...' );
$this->response->redirect( 'sign-up' );
}
言い換えれば、私の目標は次のとおりです。
1)入力したコンテンツが有害でなく、私のニーズに合っていることを確認します($validation->run()
)、
2)ステップバイステップ...ユーザー名はすでに取得されていませんか(usernameExists()
)?
3)メールはもう取られていませんか(emailExists()
)?
4)もっとあるかもしれません...
たとえば、ステップ1がfalseの場合、アプリケーションはステップ2に進む必要はありません。その後、エラーメッセージを含む文字列が必要になりますが、各ステップのメッセージは異なります。次に、メッセージを渡して表示することができます(メッセージがある場合)。もちろん、機能するコードを書くことはできますが、ベストプラクティスを探しています...そして、コードを維持するには、DRY(Do n't Repeat Yourself)とKISS(Keep It Simple、Stupid!)の原則に従う必要があります。読みやすく、理解しやすく、保守も簡単です。