Laravel - Можно ли заменить / расширить черту из ядра Laravel? - PullRequest
0 голосов
/ 13 февраля 2020

Возможно ли это? Я использую многопользовательский пакет, который конфликтует с другими Laravel пакетами, такими как Scout. В идеале я хочу иметь возможность заменять / расширять черту Illuminate\Queue\SerializesModels в ядре.

Очевидно, что другой способ сделать это - просто заменить эту черту на мою собственную в каждой работе, но она делает тогда в случае таких вещей, как Laravel Scout, я должен переписать классы скаутов, просто чтобы заменить эту черту, в моем собственном приложении, которое кажется неправильным.

Например, Laravel Scout имеет MakeSearchable класс работы. Чтобы заменить черту в этой модели, я должен сделать собственную реализацию класса, идентичную пакету, за исключением изменения этой черты:

class MyMakeSearchable implements ShouldQueue
{
    use TenantAware, Queueable, MySerializesModels;

    /** @var Collection */
    public $models;

    public function __construct($models)
    {
        $this->models = $models;
    }

    public function handle()
    {
        if (count($this->models) === 0) {
            return;
        }

        $this->models->first()->searchableUsing()->update($this->models);
    }
}

Чтобы подключить этот класс задания, я затем Я также должен переопределить черту Scout Searchable.

Было бы неплохо, если бы я мог просто сказать Laravel "Всякий раз, когда вы хотите использовать эту черту SerializesModels, используйте ее вместо этого"

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