他们忙得不可开交Magento 2
,像Namespaces这样的概念已经纳入其中。我只是很好奇,知道请求流程是如何处理的Magento 2
,有人可以简要介绍一下。
来自Anthol Krit演讲的有趣观点
Magneto2拥有8000个课程,而Magento 1中有2700 个课程
他们忙得不可开交Magento 2
,像Namespaces这样的概念已经纳入其中。我只是很好奇,知道请求流程是如何处理的Magento 2
,有人可以简要介绍一下。
来自Anthol Krit演讲的有趣观点
Magneto2拥有8000个课程,而Magento 1中有2700 个课程
Answers:
index.php
\Magento\Framework\App\Http
使用objectManager(在引导程序之前创建的对象)创建应用程序实例()并调用method launch
。
Http Application实例执行初始路由:它使用url的第一部分来确定应该加载哪个区域(admin / frontend / rest / ...)。
定义区域后,将加载该区域的配置(与加载所有配置的Magento 1不同)。
然后,应用程序调用Magento\Framework\App\FrontControllerInterface::dispatch
所请求区域的对象。Front Controller的路由与Magento 1中的路由相同:迭代所有路由器以匹配请求。与请求匹配的路由器返回与匹配的ActionController的实例FrontController
。由于仅使用一个区域的路由器(前端未使用管理路由器),因此此过程效率更高。所有额外的行为都从前端控制器转移到plugins
of FrontController
和Action Controllers。
当FrontController
获取动作控制器的实例时,它将对其进行调用dispatch
。动作控制器执行其任务并返回某些实现的实例ResultInterface
(如页面,重定向等)。
FrontController
只是返回ResultInterface
到呈现响应的应用程序实例。
我在Meet Magento NL上做了有关此的介绍:http : //www.slideshare.net/Dutchento/anton-kril-mm15nl