如何编写可读的if语句进行输入验证?

| 我遇到了愚蠢但仍然很严重的问题。我正在为类似“注册”的页面创建验证。我需要检查输入的值是否无害并且符合我的需求。借助Fuel框架,它非常容易。接下来...我还需要检查用户名或电子邮件是否尚未被使用。我已经写了完成这项工作的方法。但是,当我需要编写所有“ if语句”时,就会出现问题。 这正是我现在所拥有的。我不确定这是正确的方法。我可以用\“ if \'s \”和很多级别来写(我猜是嵌套)。我可以在那里使用\“ 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(保持简单,愚蠢!)原则。我的代码可读性强,易于理解和维护。     
已邀请:
我会使用if if else else if,那将是我认为最有意义的。 这样,如果第一个if是true,那么它会做的所有事情, 否则它将转到下一个。 我想这就是你想要的。     
您为什么不从中做出验证方法呢? http://fuelphp.com/docs/classes/validation.html在\“扩展验证类\”下进行检查,以使它们在运行验证时将运行。您可以按照\“错误消息\”中的说明设置错误消息 (顺便说一句,您可以使用
$validation->add_callable(\'classname\')
添加任何类,当前控制器或模型,其中
classname
既可以是类名也可以是对象实例)     

要回复问题请先登录注册