Magento 2가 서비스 계약 아키텍처의 일부로 데이터 모델을 도입했음을 알고 있습니다. 데이터 모델은 일반적으로 모듈의 Api / Data /에 정의 된 인터페이스를 구현합니다.
그러나 마 젠토는 기존 모델도 그대로 유지 한 것으로 보입니다.
모듈 고객에게 예를 들어 봅시다.
- Api / Data / CustomerInterface.php에 정의 된 데이터 모델 인터페이스
- 위의 인터페이스는 Model / Data / Customer.php에서 구현됩니다.
- 데이터 모델에는 고객 변수에 대한 모든 getter 및 setter 함수가 있습니다.
- 위의 것 외에도 Model / Customer.php도 있습니다. 이것도 게터와 세터 기능이 있습니다. 이것은 ResourceModel (Model / ResourceModel / Customer.php)에 연결되는 Magento 1 모델과 비슷합니다.
- Model / ResourceModel / CustomerRepository.php에서 다양한 함수는 Magnento 1 모델에서 데이터를 수집하여 데이터 모델로 전송 한 다음 데이터 모델을 반환합니다.
왜 오래된 모델이 필요한가요? 데이터 모델이 ResourceModel과 직접 연결할 수없는 이유는 무엇입니까?
\Magento\Customer\Api\Data\CustomerInterfaceREST / SOAP API에 대해 모든 메소드 가 노출됩니다 (활성화 된 경우). 그러나 인터페이스를 '실제'모델에 대신 연결할 수 있으므로 노출 된 메소드를 선택하기 위해 데이터 모델이 필요하지 않습니다. 즉, 함께 이루어집니다 방법입니다\Magento\Catalog\Model\Product및\Magento\Catalog\Api\Data\ProductInterface