Kontrak layanan Magento
Pada dasarnya, kontrak layanan hanyalah seperangkat antarmuka dan kelas yang melindungi integritas data dan menyembunyikan logika bisnis. Alasan mengapa pelanggan ingin menggunakan ini adalah karena kontrak memungkinkan layanan untuk berkembang tanpa mempengaruhi penggunanya.
Alasan peningkatan ini penting adalah karena ini mengubah cara pengguna berinteraksi dengan modul yang berbeda. Di Magento 1, tidak ada cara yang baik untuk berinteraksi dengan modul lain. Dengan kontrak layanan di Magento 2, Anda dapat mengakses dan memanipulasi data dengan mudah, tanpa harus khawatir tentang struktur sistem.
Arsitektur kontrak layanan
Lapisan layanan memiliki dua jenis antarmuka yang berbeda: antarmuka data dan antarmuka layanan. Antarmuka data adalah objek yang menjaga integritas data dengan menggunakan pola berikut:
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.
Antarmuka layanan menyediakan serangkaian metode publik yang dapat digunakan klien. Ada tiga subtipe antarmuka layanan:
Repository Interfaces
Management Interfaces
Metadata Interfaces
Antarmuka repositori
Antarmuka repositori memastikan bahwa pengguna dapat mengakses entitas data yang persisten. Misalnya, entitas data persisten dalam Modul Pelanggan adalah Konsumen, Alamat, dan Grup. Ini memberi kita tiga antarmuka yang berbeda:
CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface
Metode yang dimiliki oleh antarmuka ini adalah:
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.
Antarmuka manajemen
Antarmuka ini berisi fungsi manajemen yang berbeda yang tidak terkait dengan repositori. Berikut ini beberapa contohnya:
AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.
Jumlah pola terus bertambah, dan saat hal itu terjadi, beberapa fungsi ini kemungkinan akan ditambahkan kepada mereka.
Antarmuka metadata
Antarmuka metadata memberikan informasi tentang semua atribut yang didefinisikan untuk entitas tertentu. Ini juga termasuk atribut khusus, yang dapat Anda akses dengan fungsi getCustomAttribute ($ name). Atribut khusus ini meliputi:
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.
Referensi:
https://www.interactivated.me/uk/blog/service-contracts-magento-2/