我正在试图了解Magento商店请求后Magento流程的确切运作方式。
因此我陷入了问题:Mage::init()
做了什么以及Mage::init()
和Mage::run()
之间的主要区别是什么。
我希望有人可以帮助我。
答案 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开发很有用。