В LS появилась новая возможность для разработчиков плагинов —
наследование классов. Идея была высказана еще avadim'ом
здесь.
Эта возможность позволит удобно переопределять различные методы одного класса (
модуля, экшена, сущности, маппера) разными плагинами без конфликтов.
Главное отличие от делегирование —
не происходит блокировки переопределения класса для других плагинов. Также есть возможность переопределения одного метода разными плагинами, но здесь разработчикам нужно быть очень осторожными и делать так, чтоб свести вероятность конфликта к минимуму.
Как использовать.
Например, нужно переопределить метод получения пути до аватара у сущности пользователя в плагине Test. В плагине необходимо объявить те классы, которые будут наследоваться. Объявление происходит в свойстве
$aInherits:
<?php
class PluginTest extends Plugin {
protected $aInherits=array(
'entity' =>array('ModuleUser_EntityUser'=>'_ModuleSide_EntityUser')
);
public function Activate() {
return true;
}
public function Init() {
}
}
?>
Читать дальше →