@link00

О перезаписи методов/свойств в PHP. Как лучше сделать такое?

Всех приветствую.
1. К примеру есть карточка товара. И есть базовый класс Product. В нем есть св-ва, допустим: цена, алиас, описания, изображения. Есть методы, CRUD, пересчет цены со скидками/купонами, многоуровневого образования цен, обрезки изображений и пр.
2. В чем суть. Необходимо чтобы было что-то типа "плагинов". Например, нужен плагин который будет перед выводом описания, реплейсить в нем [[product_name]] на product_type+product_name. Или, плагин который будет вставлять в поле "алиас" транслит поля "имя товара".
3. По логике напрашивается решение - расширить класс Product, и в расширенный класс пихать нужный функционал. Но плагинов может быть ОЧЕНЬ много. На разных доменах/страницах/рубриках использоваться могут разные плагины. Поэтому хочется более изящного решения.
4. Я это вижу как то так (фантазирую=)) ): создается папка "plugins" в нее кидаются *.php файлы, каждый из которых представляет собой логически плагин, а на уровне языка является - классом. Классом Product, в котором просто перезаписаны ТОЛЬКО НУЖНЫЕ методы/свойства. (PHP при подобной попытке перезаписи напишет "Fatal error: Cannot redeclare class ..." )

Собственно в этом и заключается вопрос. 1) Как решить изящнее такую задачку на голом PHP 2) Ее же на Yii (может там что-то предусмотрено для подобного рода проблем)
  • Вопрос задан
  • 2634 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
Quber
@Quber
PHP Team lead
Трейты, не?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы