4

我有一个模块,它将通过执行来使用我的控制器而不是 magento

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

在我扩展核心类的类中,我必须明确要求该类。有人知道为什么是这样吗?

4

1 回答 1

12

Magento 自动加载器是一个简单的“用斜线替换下划线”算法。因为 Zend Framework 对它的控制器命名不同,并且因为 Magento 使用 Zend 的一部分并且受到 Zend 在其他方面的启发,所以它的控制器使用 Zend 约定命名并放置在一个controllers文件夹中,这意味着标准的自动加载例程将不起作用。

它最终会在 Magento 的路由过程中自动包含控制器类,而不是 PHP 自动加载器。相反,有自定义 PHP 代码来处理这个问题。

因此,在路由期间,因为您告诉 Magento 使用您的控制器而不是 Magento 的控制器来处理特定请求,所以它是唯一包含在内的控制器。

最好的猜测是控制器覆盖的请求让最初的开发人员措手不及,虽然他们很高兴陪审团用路由来构建解决方案,但重构控制器自动加载代码并不是优先事项。

于 2011-09-20T22:23:15.623 回答