Magento 컨트롤러 분해
이 아키텍처를 최적화하기 위해 커뮤니티 구성원은 훌륭한 솔루션, 즉 컨트롤러 분해를 제시했습니다.
Magento의 분해는 무엇입니까?
Magento 컨트롤러 분해
개발자로서 더 이상 Magento\Framework\App\Action\Action 클래스를 확장할 필요가 없으며 대신\Magento\Framework\App\ActionInterface에서 구현해야 합니다. 사용자 지정 컨트롤러의 목적(GET, POST 등 작업에 사용 여부)을 알고 있으면 사용할 수 있는 별도의 인터페이스가 있습니다.
\Magento\Framework\App\Action\HttpDeleteActionInterface
\Magento\Framework\App\Action\HttpGetActionInterface
\Magento\Framework\App\Action\HttpPostActionInterface
\Magento\Framework\App\Action\HttpPutActionInterface
예를 들어 :
<?php
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\View\Result\PageFactory;
class MyController implements HttpGetActionInterface
{
/** @var PageFactory */
protected $resultPageFactory;
public function __construct(PageFactory $resultPageFactory)
{
$this->resultPageFactory = $resultPageFactory;
}
public function execute()
{
return $this->resultPageFactory->create();
}
}
\Magento\Framework\App\Action\HttpGetActionInterface를 사용했음을 알 수 있습니다. ActionInterface를 확장한 메서드별 인터페이스입니다.
성능
이전 버전의 Magento 2(2.3까지)에서 Magento는 다음 클래스 집합을 사용하여\Magento\Framework\App\Action\Context를 작업에 주입했습니다.
\Magento\Framework\App\RequestInterface
\Magento\Framework\App\ResponseInterface
\Magento\Framework\ObjectManagerInterface
\Magento\Framework\Event\ManagerInterface
\Magento\Framework\UrlInterface
\Magento\Framework\App\Response\RedirectInterface
\Magento\Framework\App\ActionFlag
\Magento\Framework\App\ViewInterface
\Magento\Framework\Message\ManagerInterface
\Magento\Framework\Controller\Result\RedirectFactory
\Magento\Framework\Controller\ResultFactory
그리고 이러한 클래스는 더 이상 주입되지 않습니다. 성능이 크게 향상되고 메서드별 인터페이스를 구현하는 것이 훨씬 깔끔한 접근 방식입니다.
주의
일부 모듈에는 자체 AbstractAction이 있음을 명심하십시오. 예를 들어\Magento\Customer\Controller\AccountInterface는 추가로 고객 인증을 처리합니다.
컨트롤러 "Supertypes"는 더 이상 사용되지 않습니다(\Magento\Backend\App\AbstractAction,\Magento\Framework\App\Action\Action,\Magento\Framework\App\Action\AbstractAction, Magento\Framework\App\Action\Action\AbstractAccount). 더 이상 사용해서는 안 됩니다.
타사 관찰자가 컨트롤러에 가입할 수 있으므로 2.5.0까지는 코드 마이그레이션을 피하는 것이 좋습니다. getRequest, getResponse, getActionFlag와 같은 메서드는 상속으로 제거되며 이벤트에서 컨트롤러 개체를 통해 액세스할 때 오류가 발생합니다.
2.4.0 릴리스부터 새 코드에만 새로운 접근 방식을 사용하는 것이 좋습니다.
기존 Magento 컨트롤러는 이전 버전과의 호환성을 유지하기 위해 2.5.0까지 마이그레이션되지 않습니다.
아래 댓글 섹션을 통해 이 블로그에 대한 생각을 알려주거나 내 이메일 ID(예: [email protected])로 이메일을 보내주세요. 다음 시간까지 행복한 코딩 🙂
Reference
이 문제에 관하여(Magento 컨트롤러 분해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ashish11/decomposition-of-magento-controllers-42m0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)