Как расширения переопределяют невыразимые классы

magento.stackexchange https://magento.stackexchange.com/questions/753

  •  16-10-2019
  •  | 
  •  

Вопрос

Я собирался собрать крошечное расширение, чтобы включить Шаблон подсказки под глобальным масштабом, но застрял, пытаясь переписать core/template.

Перезапись класса работает только для классов, созданных с помощью одного из методов Magento для этого (helper, getModel, getSingleton) Для абстрактных и многократных классов, которые вы, кажется, остались с вариантом local/Mage переопределение.

Два вопроса:

  1. Есть ли разумный способ избежать local/Mage В любое время переопределяется?
  2. Если нет, как вы включаете такие переопределения в расширения сообщества?
Это было полезно?

Решение

1) Любое расширение, которое вы предлагаете сообществу, должно находиться в пуле кодексов сообщества.

2) Вы не должны, но вы можете, и иногда вы должны, потому что Деметра был очень игнорирован в Magento 1.

Почти всегда есть способ переопределения, включая использование отражения Как упоминалось Винай некоторое время назад.

Если в обходных путях слишком много недостатков, вы просто должны взять на себя ответственность за определение класса. Вы можете сделать одно из следующих действий, при условии, что пользователи узнают:

  1. В пуле кода сообщества предоставьте модифицированное определение под Mage | Varien | Zend имен пространство в зависимости от необходимости. Возможная проблема будет заключаться в том, что конечный пользователь мог бы сделать то же самое.
  2. Как указано выше, но в новом пуле кода: приготовление нового CodePool к начальной загрузке включает пути, использующие set_include_path(). Анкет Недостаток: больше stat()вызванный автозагрузчиком, и вы включаете манипуляции с путем, будет нечевидным, как и за пределами начальной загрузки.
  3. Если возможно, предоставьте определение самостоятельно до того, как оно будет загружено из его обычного местоположения, например, явно include()Используйте его из нестандартного места под вашим пространством имен.

Звучит здесь, чтобы позаботьтесь о ваших потребностях-у кого-то будет идея. Что касается шаблона, намекает на применение администратора, Смотрите мой ответ который даже не требует PHP.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top