Почему не magento автозагрузка родительского класса - PullRequest
4 голосов
/ 21 сентября 2011

У меня есть модуль, который будет использовать мой контроллер над magento, выполняя

<routers>
  <checkout>
    <args>
      <modules>
        <Some_Thing before="Mage_Checkout">Some_Thing</Some_Thing>
      </modules>
    </args>
  </checkout>
</routers>

В моем классе, который расширяет базовый класс, я должен явно требовать этот класс.Кто-нибудь знает, почему это так?

1 Ответ

12 голосов
/ 21 сентября 2011

Автозагрузчик Magento представляет собой простой алгоритм «заменить подчеркивание на косую черту». Поскольку Zend Framework называет свои контроллеры по-разному, а Magento использует части Zend и вдохновлен Zend в других, его контроллеры названы по соглашениям Zend и помещены в папку controllers, что означает, что стандартная процедура автозагрузки не будет работать.

В итоге классы контроллеров автоматически включаются во время процесса маршрутизации Magento , но НЕ в автозагрузчик PHP. Вместо этого есть специальный код PHP, чтобы справиться с этим.

Итак, во время маршрутизации, поскольку вы сказали Magento использовать ваши контроллеры вместо контроллера Magento для конкретного запроса, это единственный контроллер, который включается.

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

...