Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Окружение:
- PHP 8.*, Yii 2.*, MySQL 8.*
- Задача:
- Добавить команду для генерации миниатюр.
- Условия:
- В системе есть таблицы "product" и "store_product".
- В таблице "product" есть поля "id", "image" и "is_deleted", а в таблице "store_product" есть поля "id", "product_id" и "product_image".
- Связь между ними: `product`.`id`=`store_product`.`product_id`.
- Также в системе имеется класс Images, который умеет генерировать миниатюры. У класса есть два статичных публичных метода:
- generateMiniature() и generateWatermarkedMiniature(). Оба прининимают на вход следующие параметры:
- 1. Ссылку на картинку
- 2. Массив, в котором указана максимальная ширина и высота миниатюры в ключах 'width' и 'height' (пример: ['width'=>500, 'height'=>400])
- В ответ либо возвращают ссылку на миниатюру, либо выбрасывают исключение. Класс в полноценном виде реализовывать не нужно, достаточно функций-заглушек.
- Можно использовать этот пример: https://pastebin.com/pBegYXgX
- Описание:
- Необходимо, чтобы по команде yii <some-command> генерировались миниатюры для изображений для всех продуктов, которые не удалены.
- Команда должна принимать три именованных параметра:
- 1. sizes - обязательный, набор размеров миниатюр. Размеры разделюятся через запятую. Если ширина и высота разная, то они разделяются символом "x" (латиница).
- Пример формата: "100,200x300,500x600".
- 2. watermarked - опциональный, по умолчанию false. Накладывать ли водные знаки на миниатюру.
- 3. publishedOnly - опциональный, по умолчанию true. Искать только те товары, которые есть в обеих таблицах - "product" и "store_product"
- Миниатюры должны генерироваться как для product.image, так и для store_product.product_image
- Учесть, что как product.image, так и store_product.image могут быть NULL.
- Сохранять данные нигде не надо.
- На выходе система должна выдать сообщение о том, сколько миниатюр было сгенерировано успешно и сколько сгенерировать не удалось.
Advertisement
Advertisement