Так что composer - это круто, и в packagist репозитории есть много кода, который облегчает написание расширений Magento.
Проблема, с которой я сталкиваюсь, заключается в том, как лучше (чисто) настроить автозагрузку.
По умолчанию пакеты composer устанавливаются в / vendor, и внутри этого каталога находится файл autoload.php, который устанавливает загрузку классов для управляемых пакетов composer.
Итак, что было бы лучшим способом для файла '/vendor/autoload.php' композитора require_once? Это должно работать как для интернет-магазина, так и для сценариев оболочки. Есть ли событие наблюдателя, которое я могу нажать, чтобы выполнить require_once?
Ура!
require_once $mageFilename
будет вызван). Это хорошо работает для установки клиента и не требует перезаписи файлов вообще.Ответы:
Автозагрузчик Magento зарегистрирован в
Mage.php
.Если вы хотите сделать это в своем собственном модуле, вам нужно захватить первое возможное событие и требовать наличия там автозагрузчика.
Согласно анализу Алана, это было бы
resource_get_tablename
- но вы должны убедиться, что вы обрабатываете это событие только один раз.Быстрое и грязное решение было бы исправить
Mage.php
(самое начало файла), но это взломало ядро.Также у нас есть модуль Magento-PSR-0-Autoloader , который предлагает способ добавления автозагрузки композиторов через config. Это базовая реализация, которая использует
resource_get_tablename
событие.источник