Mage :: init做什么?

时间:2015-01-28 08:16:30

标签: php magento zend-framework

我正在试图了解Magento商店请求后Magento流程的确切运作方式。

因此我陷入了问题:Mage::init()做了什么以及Mage::init()Mage::run()之间的主要区别是什么。

我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:2)

Mage :: init() ::使用访问Magento所需的所有变量和对象初始化应用程序对象。 在没有请求处理的情况下初始化应用程序。

Mage :: run() ::是前端入口点,这意味着它加载配置文件,模块配置,加载数据库并处理请求处理。运行应用程序运行负责请求处理和发送响应的流程。

答案 1 :(得分:2)

正如我在源代码中发现的那样,有三个选项可以初始化Magento引擎:

Mage :: run(); 正如Veerendra所写,这将处理并渲染Magento前端站点,其中包含大量错误处理。这称为前端控制器的调度方法。使用此方法,$this->_initModules();调用资源设置并在必要时运行数据库升级脚本。将调用Mage_Core_Model_Resource_Setup::applyAllUpdates();

Mage :: app(); 正如我所看到的,检查应用程序是否已初始化,以及是否初始化应用程序和加载区域。此方法返回应用程序对象。此方法不处理数据库更新脚本而不调用呈现方法,因此它不像run()那样使用大量的CPU和RAM。我认为这种方法对于处理AJAX或任何其他API请求的快速脚本非常有用。

Mage :: init(); 正如我在源代码中看到的那样,这个方法介于前两个方法之间。此方法有一些错误处理(使用重定向和404页面),但与app()方法类似,因为不会像run()方法那样呈现任何输出。此方法具有额外的$module参数,可以启用在管理站点禁用的模块。使用此参数,$this->_initModules();将调用数据库升级脚本,就像run()方法一样。我认为这种初始化对API开发很有用。