За последние 24 часа нас посетили 61805 программистов и 1589 роботов. Сейчас ищут 893 программиста ...

В чем преимущество объектов?

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

  1. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    ну ну....
    А теперь представьте. Руководитель проекта или заказчик, говорит: хочу чтобы везде где есть комментарии в начале текста должно добавляться "Человек сказал:". (Задачу уточню технически: потребовалась именно оработка данных полученных из БД). И вы будете везде искать свои query....
    При этом MVC для того и нужен, чтоб не пришлось ни чего искать.... Я тупо иду в модель и в методе получения данных из базы, обрабатываю данные, и, автоматом, где бы эти комментарии не использовались (на станице товра, на общей странице отзывов, на гавной, в рассылке, в rss), эти изменения появлялись....
    В вашем случае это будет геморрой... Ну или таки вы переделаете на вариант в рамках MVC.
     
  2. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    MVC ради MVC тоже не надо. Делать так как написано в учебнике да это хорошо для профана новичка, точно слишком плохо не сделает. Но тот кто понимает как работает и исполняется програмный код не будет городить лишней кучи кода. Для чего? Тут всё зависит от опыта программиста чем больше его опыт, тем чище будет код.
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Walk, главное, зачем вообще нужны объекты - это полиморфизм. На котором строятся все паттерны, в принципе. Вот смотри, приведу задачу. Задача немного бредовая, но заказчик мне реально поставил такую, так что тут всё правда. У заказчика куча интернет-магазинов, часть на Open Cart 1, часть на Open Cart 2, часть - на Joomla + VirtueMart. Плюс есть товары, которые в разных магазинах повторяются (т.е. при изменении цен в одном магазине надо на тот же процент изменить цену и в других). И вот он захотел, чтоб из типа CRM, которую я ему делал, можно было цены во всех этих магазинах менять одновременно. Как это было сделано с использованием ООП?
    1. Был создан абстрактный класс PriceChanger, получающий ссылку на экземпляр соединения с БД конкретного магазина
    2. У него абстрактный защищённый метод doChange, который должен выполнять конкретный запрос (паттерн "Шаблонный метод")
    3. Так же у каждого PriceChanger могут быть дочерние PriceChanger, для связанных магазинов (паттерн "композит")
    4. У priceChanger есть метод change, который вызывает у своего экземпляра doChange, и метод сhange у дочерних "ценоменялок" (2 часть паттернов "Шаблонный метод" и "композит")
    5. Классы OpenCart1Changer, OpenCart2Changer, JoomlaChanger реализуют непосредственную логику изменения в каждом из магазинов
    6. Есть немного жутковатый конфиг, который описывает всю иерархию (т.е. какие магазины главные, какие дочерние и т.п.) и класс PriceChangerFactory, которые по этому конфигу создаёт экземпляры
    7. Теперь ради чего всё это было. Вот код в контроллере, который обрабатывает изменения:
    PHP:
    1. foreach ($_POST as $changerName => $percent) {
    2.     if ($percent == 0) {
    3.         continue;
    4.     }
    5.     $changer = PriceChangerFactory::instance()->createChanger($changerName);
    6.     $changer->change($percent);
    7. }
    Самое прикольное, что если сюда добавить магазины ещё на каком-нибудь движке, то я просто допишу ещё один класс (какой-нибудь WPCommerceChanger, к примеру), и больше мне ничего не нужно будет трогать.
     
    [vs] нравится это.
  4. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Нет. Это у вас не достаточно опыта. ;)
    Завтра команда PHP изобретет новый, более продвинутый и все. (ну или это будет круче реализовано на уровне БД).
    И такое бывало уже.
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    А теперь вы слышите звон там где не он. Вы читаете сквозь строки, или вообще не читаете что я пишу, как можно разговаривать с вами, если вы за двумя деревьями не видите леса.
    --- Добавлено ---
    нет просто вы не компетентный пых программист.
     
  6. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Нет. MVC это именно для того, чтоб код был более понятен. Если вы свой проект декларируете как MVC, то вновь прибывший должен будет понимать что это значит, а не разгадывать, что вам лично показалось более логичным на определенном этапе.
    --- Добавлено ---
    @askanim, не наступайте на старые грабли. Я на личности не переходил.
    Я может и не компетентный "пых программист". Но программирую на нем со времен когда вы в школу пошли, а программирую на прочих языках. Со времен когда, возможно, еще и ваши родители в ясли ходили...
    Так что думайте прежде чем пишите
     
    MouseZver нравится это.
  7. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    nu-davay-taya-rasskazhi-kak-ty-men_17661113_big_.jpeg
    Если программист (вновь прибывший) приходит в проект, должна быть документация к проекту (Если он где то писал свою логику), и в этом случае если её нет и ещё нет комментариев, он ну скажем очень плохой человек.
    --- Добавлено ---
    --- Добавлено ---
    То что вы что-то не понимаете или не знаете, не говорит что у меня не достаточно опыта.
    --- Добавлено ---
    Поэтому говорю вы не компетентны, как программист пыха.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    у тебя к проекту есть такая документация? если нет то ты и есть тот самый "плохой человек".
    ибо то что творится у тебя в коде - это уже не MVC
     
  9. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @voral не надо писать програмный код ооп ради ооп или же mvc ради mvc, нужно писать так как будет оптимально и чистенько. Потому что чистый код по умолчанию оптимален и по умолчанию удобо юзабельный (Вот про что я вам тылдычу уже около часа, но вы на отрез впихиваете мне то что надо писать mvc ради mvc в строгом понимании... (А в строгом понимании чего? А где логику писать? А где место отдельным библиотекам? Где вообще должен храниться алгоритм (А вообще что такое mvc?))) Ну вот задайте себе эти вопросы и ответьте на них. Нету чистого вида mvc каждый пишет логику так как считает её наиболее оптимальной. Есть простой некий набор инструкций, но это не обязывает программиста писать именно точно так же. Если вы считаете что я не прав, аргументируйте более логично. В ваших словах логики столько же сколько в 2+2=5
    --- Добавлено ---
    Да мне пофиг чего и как вы и где вы. Важно то что я сейчас вижу. Что в ваших словах логики не на грамм.
    --- Добавлено ---
    Вот это просто показатель того как классно вы читаете мои сообщения.
    Такое ощущение что вы вообще мои посты: либо не понимаете, либо не читаете.
     
  10. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Ну мы уже не один раз это проходили. Вы все видите по своему. Вы воспринимаете MVC просто как религию, которой можно следовать или не следовать, следовать частично и или полностью. У вас опыт работы, как я понимаю, вы один в "команде" разработчиков... А я работа ив одиночку, и в команде (разного "размера", наших и дальнего зарубежья). У меня есть опыт и просто понимание для чего MVC полезен. Понимание на опыте, проблемах и т.п... Зачем мне доказывать вам, то что вы не хотите сышать? У вас опыт "три года прогаю на пыхе"... Прогайте дальше, наступайте на те же грабли, что я когда то настпуал.. .Ваш лоб - что хотите то и делайте...
     
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Думайте как вам угодно. Но вот ток давайте вы будете свою думалку аргументировать.
    --- Добавлено ---
    я воспринимаю её как справку, для начинающего а дальше уже как хотите.
     
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а с чего ты взял что у тебя чистенько и оптимальненько?

    если у тебя отрабатывает бизнес-логика в контроллере, то как ты собираешься её, например повторно использовать?
    лежала бы в модели, можно было бы юзать и в других местах, а так как у тебя, хз.
     
  13. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    мало наступали раз до сих пор сами прописываете на пыхе шифрование сами, а не пользуетесь DEFAULT от пыха
     
  14. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Блин... Вам все разжовывать надо?
    Я просто показал пример, реальный пример, такое уже было в истории (PHP видите ли развивается).... Придумают они завтра функцию check_password_super_ii() и все....
    А шифрование на пыхе... Да легко... Представьте есть крутая система шифрования программноаппаратная разработанная под конкретный проект... Работать с ней через расширение PHP (надеюсь вы в курсе, что расширения для PHP можно самим писать, и, иногда, это бывает очень полезно)...
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Да ну молодцы чё) Флаг вам в руки и барабан на шею а я доверюсь умным дядькам из ZEND
    И доверюсь вот этой фразе
    PHP:
    1. /*PASSWORD_DEFAULT - используется алгоритм bcrypt (по умолчанию с PHP 5.5.0).
    2. Обратите внимание, что используемый алгоритм может со временем меняться на более
    3. сильный, когда таковой добавляется в PHP. Соответственно и длина результата может со
    4. временем меняться. В связи с этим рекомендуется выбирать длину поля для хранения в базе
    5. данных более 60 символов (255 символов могло быть хорошим вариантом).*/
     
  16. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Мысли вслух.
    Программист в своем развитии проходит несколько стадий. При чем даже на самом высоком уровне ни один не скажет "Я знаю все".
    Начинается все с "чайник". Это не плохо, это нормально. Но вот дальше у чайника два пути: развиваться или стать "ламером".
    "Ламер" это уже очень плохо. Считает, что все знает; "давит своим опытом и знаниями". Хотя по сути все тот же "чайник". Чаще всего это тупик в развитии программиста...
     
  17. Walk

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

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Я не буду писать на обычных функциях, я сделаю это на фулл статике. А как мы уже обсуждали - фулл статика это не ООП.

    Лолшто? Простыни по 5000+ строк с которыми невозможно работать - одна из первых проблем, с которыми я столкнулся при написании своих велосипедов.
     
  18. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
  19. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Например password_verify появился с версии PHP5.5. А до этого с паролями думаете вообще не работали? Да даже сейчас некоторые сайты работают на PHP5.3.. А уверены что в PHP11 не будет чего то другого?
     
  20. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    не пойдёт. Опиши калесо полностью и отдельно, чтобы например вдруг у одной машины был разный диаметр колёс, ширина шины например, разновидность протектора разная. Всё до мелочей! Вот и попробуй описать это на ооп, а потом на процедурке и на статике. И если ты так не видишь разницу, то сделай сам для себя её. Напиши там и там, и увидишь наглядно
     
  21. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Я не понял ничего))
     
  22. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Один фиг.
     
  23. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Walk, я и пишу, что городить простыни это не то, чем должен заниматься программист))
     
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    а вот это я считаю плохо.
    --- Добавлено ---
    а я не уверен что будет вообще php11
    --- Добавлено ---
    Ну вот честно говорю хеш пароля проверяется у меня ток в одном месте при логине и всё. Через грёбаный один контроллер, и пока даже не представляю где он ещё юзаться будет. Если речь о проверке авторизован пользователь или нет, то там другое проверяется, а не пароль.
    --- Добавлено ---
    и если будут вдруг сомнения в Аутентификации пользователя, вывалю модальное окно которое заставит его подтвердить свой логин и пароль где опять же будет отправлен запрос на тот же контроллер который один... Так в какой класс мне это надо вынести и для чего, я вот не знаю в одном месте юзается... А тут бац надо зачем то лишних 15 строк написать зачем? А просто чтобы было...
    --- Добавлено ---
    Так лан, болтать это хорошо но надо и работать.
     
  25. voral

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

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Это не важно. Просто есть конкретный факт. Что в языке периодически одни функции уходят, другие приходят на замену. А хорошие проекты существуют долго и переживают все это... Опытные себе соломку могут постелить. Понятно, что команды типа echo у их нет потенциального смысла менять, а вот в области криптографии все очень серьезно. Развиваются и мощности и алгоритмы.