Как правильно сделать наследование экшена?

Требуется сделать ActionVideo для своего типа топика, который будет почти полностью повторять ActionTopic.
Логично сделать от него наследование. Но тогда, если другие плагины переопределят методы ActionTopic, эти изменения не коснутся наследуемого ActionVideo. Есть идеи, как реализовать наследование с учетом изменений от плагинов?

5 комментариев

avatar
Првильные плагины работают через $aInherits. В этом случае, «оригинал» не затрагивается.
А неправильные плагины — зачем вам нужны?
avatar
Плагины работают через $aInherits, когда им надо сделать изменения в методах оригинала. Мне как раз нужно сделать наследование от оригинала со всеми изменениями.
avatar
Понял. Простите за неверный совет.
avatar
Есть решение в начале файла PluginYourplugin_ActionVideo.class.php прописать прослойку:

/**
 * Определяем наличие делегата экшена
 */
$sClass = 'ActionTopic';
if($aChain=Engine::getInstance()->Plugin_GetLastInherit('ActionTopic')) {
    if(!empty($aChain)) {
        $sClass=$aChain['inherit'];
    }
}
class_alias($sClass,'PluginYourplugin_Wrapper_ActionTopic');

class PluginYourplugin_ActionVideo extends PluginYourplugin_Wrapper_ActionTopic {

}
avatar
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.