Hợp đồng dịch vụ Magento
Về cơ bản, hợp đồng dịch vụ chỉ là một tập hợp các giao diện và lớp bảo vệ tính toàn vẹn dữ liệu và ẩn logic kinh doanh. Lý do tại sao khách hàng sẽ muốn sử dụng điều này là vì hợp đồng cho phép dịch vụ phát triển mà không ảnh hưởng đến người dùng.
Lý do nâng cấp này rất quan trọng là vì nó thay đổi cách người dùng tương tác với các mô-đun khác nhau. Trong Magento 1, không có cách tương tác tốt với các mô-đun khác. Với các hợp đồng dịch vụ trong Magento 2, bạn có thể truy cập và thao tác dữ liệu dễ dàng mà không phải lo lắng về cấu trúc của hệ thống.
Kiến trúc hợp đồng dịch vụ
Lớp dịch vụ có hai loại giao diện khác nhau: Giao diện dữ liệu và Giao diện dịch vụ. Giao diện dữ liệu là các đối tượng bảo tồn tính toàn vẹn dữ liệu bằng cách sử dụng các mẫu sau:
They’re read-only, since they only define constants and getters.
Getter functions can contain no parameters.
A getter function can only return a simple object type (string, integer, Boolean), a simple type array, and another data interface.
Mixed types can’t be returned by getter functions.
Data entity builders are the only way to populate and modify data interfaces.
Giao diện dịch vụ cung cấp một tập hợp các phương thức công khai mà khách hàng có thể sử dụng. Có ba kiểu giao diện dịch vụ:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Giao diện kho lưu trữ
Giao diện kho lưu trữ đảm bảo rằng người dùng có thể truy cập các thực thể dữ liệu liên tục. Ví dụ: các thực thể dữ liệu liên tục trong Mô-đun khách hàng là Người tiêu dùng, Địa chỉ và Nhóm. Điều này cho chúng ta ba giao diện khác nhau:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
Các phương thức mà các giao diện này có là:
Save – If there’s no ID, creates a new record, and updates what’s existing if there is one.
Get – Looks for the IDs in the database and returns a certain data entity interface.
GetList – Finds all data entities that correspond with the search criteria, then gives access to the matches by returning the search result interface.
Delete – Deletes the selected entity
DeleteById – Deletes the entity when you only have its key.
Giao diện quản lý
Các giao diện này chứa các chức năng quản lý khác nhau không liên quan đến kho lưu trữ. Dưới đây là một số ví dụ:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Số lượng các mẫu không ngừng tăng lên và vì vậy, một số chức năng này có thể sẽ được thêm vào chúng.
Giao diện siêu dữ liệu
Giao diện siêu dữ liệu cung cấp thông tin về tất cả các thuộc tính được xác định cho một thực thể cụ thể. Điều này cũng bao gồm các thuộc tính tùy chỉnh mà bạn có thể truy cập bằng hàm getCustomAttribution ($ name). Các thuộc tính tùy chỉnh này bao gồm:
EAV attributes – Defined via the administration interface for a local site. They can differ according to the site, which means that they can’t be represented in the data entity interface written in PHP.
Extension attributes, for which the extension modules are used.
Tài liệu tham khảo:
https://www.interactivated.me/uk/blog/service-contuces-magento-2/