За последние 24 часа нас посетили 31973 программиста и 1380 роботов. Сейчас ищут 879 программистов ...

Замена регулярок через MySQL

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

  1. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Можете рассказать про регулярные вырождения через MySQL.
    Из плюсы и минусы, да и как вообще можно реализовать. Получу ли я более быстрый отклик от скрипта и т.д.
    Есть примитивная база, например:
    || ID || || regular ||
    -----1--------------?------
    Что писать за место "?" и при этом, как обрабатывать этот запрос?
    А может это вообще глупая затея...
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ты о чём? База может работать с регулярными выражениями, и ты можешь их использовать, да. https://dev.mysql.com/doc/refman/5.7/en/regexp.html Ну по идее, лучше, когда вся фильтрация данных возложена на базу, а не на клиента. При чём тут твоя схема, не въехал
     
  3. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Ну я имел введу создать свою таблицу с регулярными выражениями по типу [^0-9], а потом подумал, а чем будет это отличаться от стандартных, только добавлю дополнительной нагрузки...
    --- Добавлено ---
    И еще эта документация только на SELECT, на другие операции нельзя использовать REGEXP?
     
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Везде, где можно использовать функции.
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а цель существования такой таблицы?
    какую задачу ты пытаешься решить таким способом?
     
  6. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Ну вообще, чтобы не лезть в случае чего в код, а отредактировать через базу, у меня просто один файл user.class.php и в нем уже 2650+ строк, ну и сложно в случае чего искать ту или иную строку.
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Тебе нужен рефакторинг, http://i-novice.net/refaktoring-vydelenie-klassa/
    Если у меня один класс становится больше 200 строчек, я начинаю сильно нервничать.
    --- Добавлено ---
    https://refactoring.guru/ru/smells/large-class
     
  8. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Я и не знал, что можно таким образом сделать наследование через конструктор
    PHP:
    1. $this->_officePhone = new PhoneNumber();
    . Всегда делал extends...
     
  9. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Это не наследование, это агрегация. И она в общем и целом предпочтительнее наследования.

    Сравни: пользователь имеет номер телефона или пользователь является разновидностью номера телефона. Чувствуешь разницу? Первый случай - агрегация, второй наследование. Лакмусовая бумажка.
     
  10. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    только что посмотрел на один из файлов мода который недавно делал)) 6000 строк)) пару функций по 250+ строк))
    надо про рефакторинг почитать))
    --- Добавлено ---
    а это не нарушает принципы инкапсуляции.. ведь тут
    Код (Text):
    1. $this->_officePhone = new PhoneNumber();
    получается зависимость одного класса от другого..

    хотя вот это вот утверждение мне нравится
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну сделать, чтоб все классы были на 100% друг от друга не зависимы, просто невозможно. И это не нарушает инкапсуляцию, поскольку инкапсуляция - это не про зависимости, это про сокрытие внутренней реализации от клиента
    --- Добавлено ---
    Ну и сделать инверсию зависимости тоже никто не мешает, сделать какой-нибудь PhoneNumberInterface. Хотя я думаю, что есть смысл зависимость оставить о таскать в другой проект и класс для телефонного номера в данном случае
     
  12. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    когда то читал статью... там было сказано что связывать классы лучше через контроллер.. есть к примеру два класса человек и телефон... брать объект телефон не из класса человек, а брать его в контроллере и посылать потом уже в объект человек.. как то так..
    у меня мало опыта работы с классами.. мой основной опыт работы был с движками без классов..

    вполне может быть)) могу ошибаться))
     
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну это всё ты смотришь от конкретной ситуации, это всё не аксиоматично. Где-то ты делаешь инверсию зависимостей, где-то понимаешь, что и прямая зависимость больших проблем не составит. Ну в примере с номером телефона - вряд ли можно написать несколько реализаций разных номера телефона. Инверсия зависимостей, внедрение зависимостей - это когда потенциально может понадобится в каких-то целях зависимый класс подменять.