Như mọi người đã biết, Magento vừa cho ra mắt magento 2.4. Đây là một bản cập nhật lớn, vì vậy có rất nhiều thay đổi về kiến trúc. Mình xin giới thiệu 1 thay đổi có thể nói là khá lớn trong Magento, đó là việc “Decomposition of Magento Controllers”

Mọi người hãy xem hình sau:

image

Như truyền thống, toàn bộ Controller trong Magento sẽ phải kế thừa từ Class AbstractAction. Điều này khiến cho mặc dù ta tạo 1 controller rất đơn giản, ví dụ chỉ in ra màn hình chữ Hello World thôi, ta phải kế thừa từ class AbstractAction. Class này thì nó có khai báo class sau trong contructor : \Magento\Framework\App\Action\Context

Class context này sẽ khiến tốc độ xử lý của Action bị giảm đi do nó có chứa khá nhiều dependency:

/**
    * @param \Magento\Framework\App\RequestInterface $request
    * @param \Magento\Framework\App\ResponseInterface $response
    * @param \Magento\Framework\ObjectManagerInterface $objectManager
    * @param \Magento\Framework\Event\ManagerInterface $eventManager
    * @param \Magento\Framework\UrlInterface $url
    * @param \Magento\Framework\App\Response\RedirectInterface $redirect
    * @param \Magento\Framework\App\ActionFlag $actionFlag
    * @param \Magento\Framework\App\ViewInterface $view
    * @param \Magento\Framework\Message\ManagerInterface $messageManager
    * @param \Magento\Framework\Controller\Result\RedirectFactory $resultRedirectFactory
    * @param \Magento\Framework\Controller\ResultFactory $resultFactory
    */

Theo cơ chế mới này, class sẽ không còn phải kế thừa từ AbstractAction. Do đó, tốc độ xử lý controller sẽ nhanh hơn đáng kể:

image

Ngoài ra, việc không còn kế thừa từ AbstractAction cũng khiến việc viết UnitTest dễ dàng hơn khi không cần phải Mockup quá nhiều từ Context.

Hiện tại Magento đang Migrate toàn bộ Controller sang cơ chế mới. Dự kiến Magento 2.4 sẽ áp dụng cơ chế mới này và deprecated toàn bộ cách dùng cũ (vẫn cho dùng nhưng không khuyến cáo). Bắt đầu từ Magento 2.5, toàn bộ việc kế thừa từ AbstractAction sẽ không còn được dùng.

image
2.4.0 - we give working mechanism and deprecate the old approach with inheritance
2.5.0 - we remove inheritance from core controllers

Như vậy, Magento 2.4 sẽ là điều kiện để mọi người thích nghi với cơ chế mới, trước khi chính thức sử dụng hoàn toàn vào Magento 2.5.

Cảm ơn bạn đã theo dõi :))

Nếu bạn là một Magento Developer, ưa thích làm sản phẩm quốc tế trong lĩnh vực bán lẻ - thương mại điện tử! Tham gia Tuyển dụng Magento Developer, môi trường làm việc từ xa, địa điểm tự do, quản lý linh hoạt theo Agile.

Hãy đăng ký nhận tin để là người đầu tiên đọc bài viết mới nhất từ chúng tôi nhé

Posted 
Jul 30, 2020
 in 
Tech
 category

Bài viết khác từ

Tech

category

View All