Наследование в плагине

Трюки с LiveStreet
Как известно, для наследования у плагинов в главном классе (Plugin) есть переменная aInherits, которая содержит ассоциативные массивы module, mapper, action, entity, template, block, которые, в свою очередь, указывают на ассоциативный массив, который объясняет движку что и как наследовать. Но мало кому известно что не важно как назвать тип модуля который мы наследуем, главное чтобы он был из этого списка. А движок потом сам разберется с ним, если все другие параметры указаны верно. Т.е. если вы обычно пишете для наследования екшена, который отвечает за аякс загрузку данных такой код:

  protected $aInherits = array (
    'action' => array (
      'ActionAjax'  // укороченная запись, если кто не в курсе
    )
  );


то переписав код так, он не станет хуже работать:

  protected $aInherits = array (
    'module' => array (
      'ActionAjax'  // укороченная запись, если кто не в курсе
    )
  );

этим вы лишь усложните жизнь тому, кто будет допиливать ваш код в будущем, возможно вам самим. Т.к. логика при таком написании теряется напрочь. «Почему?» спросите вы. Отвечаю — движок проверяет правило фактически по самой записи — «ActionAjax» и чтобы тип наследуемого модуля был в списке, который я указал в начале топика, а запись в полном варианте была бы написана так:

  protected $aInherits = array (
    'module' => array (
      'ActionAjax' => 'PluginImplugindude_ActionMynameofaction'
    )
  );

Строку

'ActionAjax' => 'PluginImplugindude_ActionMynameofaction'

можно записать ещё и так:

'ActionAjax' => '_ActionMynameofaction'

такая запись, которая начинается с нижнего подчеркивания (_) автоматически будет дополнена ядром именем класса вашего плагина (PluginImplugindude) и будет превращена в полный вариант записи.

Где это можно использовать? В коде где вам хотелось бы написать

DEFINE true false;

или удивить своих колег по цеху глубокими знаниями движка. Но желательно все же воздержатся от такой путаницы и следовать неписанным стандартам.
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.