Как написать читабельный, если утверждения для проверки ввода? - PullRequest
1 голос
/ 15 мая 2011

Я столкнулся с глупой, но все еще существенной проблемой.Я создаю проверку для страницы, подобной "Зарегистрироваться".Мне нужно убедиться, что введенные значения не вредны и соответствуют моим потребностям.Благодаря Fuel Framework это достаточно просто.Далее ... Мне нужно также проверить, что имя пользователя или адрес электронной почты еще не заняты.Я написал методы, которые делают эту работу.Но моя проблема возникает, когда мне нужно написать все «если утверждения».

Это то, что у меня есть прямо сейчас.Я не уверен, что это правильный путь.Я мог бы написать все это с «если» и множеством уровней (я думаю, вложенность).Я мог бы использовать "если / еще .. если" там.Что бы вы использовали?

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) Может быть больше ...

Приложению не нужно переходить к шагу # 2, если шаг # 1, например, ложен.После этого мне нужно иметь строку, содержащую сообщение об ошибке, но, вы знаете, сообщение каждого шага отличается.Тогда я мог бы передать сообщение, чтобы отобразить его (если есть сообщение)!Конечно, я могу написать код, который работает, но я ищу лучшие практики ... и я должен следовать принципам СУХОЙ (не повторяйся) и KISS (не усложняй, глупый!), Чтобы сохранить мой кодудобочитаемым и легким для понимания и поддержки.

Ответы [ 2 ]

3 голосов
/ 15 мая 2011

Я бы использовал, если бы тогда еще, если бы, это имело бы смысл, я думаю.Таким образом, если первое, если верно, это все, что он будет делать, в противном случае он перейдет к следующему.Что я думаю, что вы хотите.

1 голос
/ 19 мая 2011

Почему бы вам не сделать из них методы проверки?

http://fuelphp.com/docs/classes/validation.html проверьте в разделе "Расширение класса проверки", чтобы они выполнялись при выполнении проверки.Вы можете установить сообщения об ошибках, как описано в «Сообщения об ошибках» (Кстати, вы можете добавить любой класс, текущий контроллер или модель, используя $validation->add_callable('classname'), где classname может быть классомимя или экземпляр объекта)

...