За последние 24 часа нас посетили 22844 программиста и 1224 робота. Сейчас ищут 655 программистов ...

Переход на ООП

Тема в разделе "PHP для новичков", создана пользователем AlexProg, 9 фев 2018.

Метки:
  1. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Всем привет!

    Название темы громкое, просто не знал как назвать.
    Вопрос такой: Как бы ты избавится от такого кода? Это процедурный стиль. Как в ООП сделать кучу проверок? (можно пример, класс, методы и т.д.) Как сделать что бы не было такой вложенности (или как это называется?) ?
    [​IMG]
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну можно цепочку вызовов валидаторов организовать, паттерн Composite. А вообще, чтоб я понял, что у вас тут происходит :)
     
  3. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Паттерн Composite - это здорово. Но у меня данные не с формы. Просто куча условий.
    Еще варианты!?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    А что, копозитом можно только формы проверять? Думаете, я сразу понял, зачем и что у вас эти 8 строк делают?
     
  5. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    А в чем проблема условий ? Разберитесь в логике. И в модели, в хелперы раскидайте.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Для начала научиться использовать логический оператор &&. Тогда это все можно будет уложить в один IF. ООП тут не причем.
     
    AlexProg и Dron-Boy нравится это.
  7. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Думаете "И" поможет? А ошибки как выводить? Там же все будет в else.
    --- Добавлено ---
    Не могу точно сказать. Можно все проверять?
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Как программист напишет, так и будет. Изначально логику этого куска надо понять, потом можно будет что-то сказать. А вообще, даже если в процедурной программе такой код появился, значит что-то пошло не так с алгоритмом
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    AlexProg нравится это.
  10. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    я вот так вот делаю

    PHP:
    1. $error = [];
    2. if(false){
    3.      $error[] = 'Error text 1';
    4. }
    5.  
    6. if(false){
    7.      $error[] = 'Error text 2';
    8. }
    9.  
    10. if(false){
    11.      $error[] = 'Error text 2';
    12. }
    13.  
    14. if(empty($error)){
    15.      //что то выполняем
    16. } else {
    17.      //выводим ошибки пользователю
    18. }
    --- Добавлено ---
    для сложных проверок можно сделать класс ModelValidate - где хранятся методы валидации данных этой модели.. пусть даже только со статическими методами.. и там строить сложные проверки..
     
    Danil005, AlexProg и Abyss нравится это.
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Я, в общем-то тоже. Но у автора код устроен так, что стопается на первой же ошибке. Я повторил его поведение без безумных вложенностей.
     
    AlexProg и Алекс8 нравится это.
  12. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Спасибо всем за ответы! Что-то в моей голове прояснилось. Карму прожал.
     
  13. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Используй switch, чтобы было красивее, вообще это сугубо косметический вариант. Код выглядит как ты хочешь, как некое живописное творения человека с цифрами в голове. Можешь сделать, как написал @Алекс8, а можно сделать:
    PHP:
    1. if( $pay['data_add'] > time() - $nd_time*3600 ) return 'Error1';
    2. if( $user_data['insert_sum'] < $MinSumInsertUser ) return 'Error2';
    3. ...
     
    AlexProg нравится это.
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Switch тут не поможет. Не тот случай.
     
    AlexProg нравится это.
  15. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Парни, да простят меня модераторы, НЕ реклама. Нашел на гитхабе (по рейтингу) валидатор
    Кто что может сказать за него? Или предложите аналоги.
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Тысячи их :)
    Пробуй, если понравится, расскажи нам.
    --- Добавлено ---
    Да даже если реклама, ничего страшного, если это по тематике и полезно, а не ссылка на средство по увеличению пипирки. У нас тут нет фанатизма в этом плане.
     
    AlexProg нравится это.
  17. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Я не ПРО, поэтому прошу помощи гуру и жду их вердикт.
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Гуру вряд ли ломанутся тут же качать, внедрять и тестить, увы. Кури отзывы от тех, кто пользуется, раз так.
     
    AlexProg нравится это.