Как изменить определенный vendor в symfony? Подскажите пожалуйста, как "добавить" нужную функцию в вендор? Есть библиотека Imagine - я долго ее штудировал, и пришел к выводу, что с прозрачностью она фактически не работает. Тот же watermark накладывается без прозрачности. Пришел к выводу, что кроме стандартного метода paste который использует imagecopy, нужно сделать его копию, в которой задействовал функцию GD imagecopymerg
Захардкодил в вендор, что не есть гуд. Не уверен что разработчики Imagine будут включать это в свой код, так как подобный вопрос у них вроде бы обсуждался очень давно.
Как правильно реализовать подобное "дополнение" в коде?

21 Авг 2019 в 07:05
226 +1
0
Ответы
1

Для изменения поведения определенного vendor в Symfony, вам следует использовать принцип наследования и переопределения методов. В вашем случае, вам нужно создать собственный класс-наследник от класса Image из библиотеки Imagine и переопределить метод paste, чтобы использовать функцию GD imagecopymerge для добавления прозрачности.

Примерно так выглядеть ваш класс-наследник:

use Imagine\Gd\Image
class MyImage extends Imag

public function paste(ImageInterface $image, PointInterface $start, $alpha = null

// ваше измененное поведение метода paste для добавления прозрачност
// используйте функцию GD imagecopymerge здес

}

Затем, в вашем коде вместо создания объекта Image из библиотеки Imagine, создавайте объект вашего класса MyImage:

$image = new MyImage('path/to/image.jpg');

Это позволит вам использовать вашу собственную реализацию метода paste с добавлением прозрачности без изменения исходного кода вендора.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 581 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир