我遇到了愚蠢的问题,但仍然存在重大问题。我正在为类似“注册”的页面创建验证。我需要检查输入的值是否无害并且符合我的需要。感谢 Fuel 框架,这很容易。下一步...我还需要检查用户名或电子邮件是否未被占用。我已经编写了可以完成这项工作的方法。但是当我需要编写所有“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 为假,应用程序不需要进一步执行步骤#2。之后我需要包含错误消息的字符串,但是,你知道,每个步骤的消息都是不同的。然后我可以传递消息来显示它(如果有消息)!当然,我可以编写有效的代码,但我正在寻找最佳实践……我必须遵循 DRY(不要重复自己)和 KISS(保持简单,愚蠢!)原则来保持我的代码可读且易于理解和维护。