Как я могу переписать метод, который находится в каталоге поставщика? - PullRequest
0 голосов
/ 12 сентября 2018

Как вы знаете, все папки / файлы, находящиеся в каталоге vendor, будут обновлены при запуске composer install. Так что изменение кодов там - неправильная практика.

Кроме того, мне нужно изменить класс DatabaseChannel, который существует в Illuminate\Notifications\Channels пространстве имен (и находится в каталоге vendor) . У него есть метод с именем send, который мне нужно изменить.

Есть идеи, как я могу это сделать? в каком классе я должен определить метод send снова и переписать мои коды? Должен ли я сделать новый класс с таким же, как DatabaseChannel? Где я должен это разместить? Должен ли этот класс быть расширен от класса, который находится в каталоге vendor? Как я могу сказать, что компилятор использует функцию, которую я определил, а не ту, которая определена в каталоге vendor?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

вы никогда не должны перезаписывать файлы вендора, и в любом случае это бесполезно.

Я предлагаю вам создать новый канал и расширить его, а затем перезаписать этот метод и использовать новый канал вместо старого. см. Документацию Laravel для создания нового канала

таким образом, ваш класс будет в курсе с пакетом, и не нужно никаких беспорядков

0 голосов
/ 12 сентября 2018

Я не знаю точно, можете ли вы.Но вы определенно не должны.Не только вы зависите от кода в папке поставщика.Потенциально десятки других зависимостей тоже.

Если вы действительно хотите, вы должны создать форк из пакета, который вы пытаетесь изменить.Внесите изменения и добавьте репозиторий в свой composer.json:

"repositories": [
     {
         "type": "git",
         "url": "https://github.com/gjedeer/celery-php"
     }
],

Затем вы можете установить зависимость так же, как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...