За последние 24 часа нас посетил 22601 программист и 1203 робота. Сейчас ищут 711 программистов ...

Решение: Как подменить класс из vendor

Тема в разделе "Решения, алгоритмы", создана пользователем artoodetoo, 26 ноя 2019.

Метки:
  1. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    В телеграм канале https://t.me/laravelrus встретил такой вопрос:

    Screenshot 2019-11-26 at 13.09.16.png
    и сам же Евгений нашёл решение:
    Laravel – How to override vendor class file?
    а я делюсь им с вами. :) потому что иногда такая хотелка возникает, ну как "попробовать что если...".
    Чтобы потом pull request с исправлением автору отправить.
     
    mkramer нравится это.
  2. Roman __construct

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

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Нууу... хз... как по мне: если задача изначально вызывает такие вот хитромудрые вопросы требующие хитромудрых решений, то скорее всего она просто как-то некорректно сформулирована.

    Ну типа того челика, который недавно json пытался регулярками парсить))) (я этот код теперь на всю жизнь запомню)))))

    Хотя, конечно, я не такой знаток ООП как Елисеев :D
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Это решение не для продакшена! Просто трюк на время тестирования.

    Бывает такое, что библиотечные классы чем-то не устраивают. Находишь там багу или негибкость и думаешь, что мог бы исправить. Вариант "отредактировать в папке vendor" ну совсем не вариант. Утащить всю библиотеку в /app/, сделать своей чтобы исправить фатальный недостаток? Этот путь тоже как-то не очень.
    А тут можно один класс попробовать подсунуть свой, если уж не выходит его отнаследовать и использовать наследника. Попробовал и сделал вывод, надо ли просить мейнтейнера поправить или создать свой публичный форк или проблема только на твоей стороне и можно её решить иначе. Вот как-то так.
     
    Roman __construct нравится это.