Magento 2: Hizmet Sözleşmesi Nedir


20

Magento 2'de, Hizmet Sözleşmesi kavramı kullanılarak oluşturulmuş bir şeyin somut bir örneği var mı? Bu terimi çok fazla atılmış gördüm, ancak Magento 2'ye şu anda var olduğu gibi bakıldığında, Hizmet Sözleşmelerinin daha yol gösterici ilkeler olup olmadığı veya Magento 2'deki şeylerin belirli uygulamalarına geri dönüp dönmedikleri bana açık değil.


Yanıtlar:


9

Anladığım kadarıyla Api klasöründe tanımlanan tüm arayüzler Hizmet Sözleşmeleri. Bu nedenle, sınıfın fiili uygulaması yerine arayüzün kullanıldığı her yerde Hizmet Sözleşmesini kullanır.

Bu eklenti uygulaması burada bir örnek olabilir https://github.com/magento/magento2/blob/2.3.2/app/code/Magento/GiftMessage/Model/Plugin/OrderGet.php#L78

Kullanır

protected function getOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)

onun yerine \Magento\Sales\Model\Order


Bağlantı çalışmıyor.
Magento Öğrenci

Teşekkürler güncellendi
Kristof at Fooman

6

Hizmetler (servis sözleşmeleri olarak da adlandırılır), kolay özelleştirme / genişletme için kararlı arayüzler sağlamak için Magento 2'deki temel geliştirme modellerimizden biridir. Kod tabanında 2 form alırlar (her ikisi de @apibunları özelleştirebileceğiniz veya bir web API'si olarak gösterebileceğiniz kararlı arabirimler olarak tanımlamak için sınıf veya sınıf yöntemleriyle açıklanır): API veya SPI. API'ler API klasöründe tanımlanır ve tamamen yeniden düzenlenmiş bir hizmet ve yalnızca bir API modülü olmak üzere iki form alır.

Tamamen yeniden düzenlenmiş hizmetler, Müşteri, Envanter, Vergi ve Teklif * modüllerine yansıtılır (Müşterinin taklit edilmesi gereken hizmettir, Teklifin yeniden düzenlenmesi gereken bir alanı vardır). Katalog, Satış ve CMS'de yalnızca API modülü görülebilir. Tamamen yeniden düzenlenmiş hizmetler için, hem web apis'lerini hem de GUI'yi etkilemek için hizmet yönteminde yalnızca bir eklenti yapmanız gerekir. Yalnızca API modülleri için, web API'larını etkilemek için hizmet yöntemini eklemeniz gerekir, ancak yine de GUI'yi etkilemek için 1x stil özelleştirmesi yapmanız gerekir.

SPI'lar temel olarak, ek açıklama eklenmiş kod içinde, @api3. tarafların bazı işlevsellik sağlamak için uygulayacakları noktalar olan arayüzlerdir . CarrierInterfaceGönderi modülünde tanımladığınız Gönderi modülünde (SP'ler) uygulayacağınız bir SPI ( ) örneği .

Hizmet çerçevesi bir dizi ilginç avantaj sağlar. Bir web api olarak kolay pozlama (ve mesaj kuyrukları aracılığıyla gelecek yazı 2.0) vi webapi.xmlyapılandırması (SOAP ve REST stili olarak). Yakın vadede (2.0 sonrası), tümü yapılandırma yoluyla yönetilebilen / gösterilebilen API çağrıları (senkronizasyon çağrıları veya zaman uyumsuzluk için yapılandırılmışsa Webhooks, mesajlar) ekleyeceğiz. Daha güvenli yükleme / yükseltme - sorunlu durumları programlı olarak tanımlayabilirsiniz (aynı arabirimi uygulayan 2 veya daha fazla uzantı). Özelleştirmek için tek bir yöntem / hizmet olduğu için hem web apis'lerini hem de gui'yi etkileyen basitleştirilmiş özelleştirme (tamamen yeniden düzenlenmiş modül veya topluluk tarafından oluşturulan yeni modüller / hizmetler için).


1
İşte Imagine 2015'ten Magento 2 platformunun daha fazla içeriğini sunmaya yardımcı olacak bazı videolar. magento.com/videos/imagine/… , magento.com/videos/imagine/… , magento.com/videos/imagine/… , magento.com/videos/imagine/…
Chuck

1

Bu yöntemlerin kullanımlarını kontrol edin:

  • \Magento\Customer\Api\AccountManagementInterface::createAccount
  • \Magento\Customer\Api\CustomerRepositoryInterface::getById

0

Magento hizmet sözleşmeleri

Esasen, hizmet sözleşmeleri sadece veri bütünlüğünü koruyan ve iş mantığını gizleyen bir dizi arabirim ve sınıftır. Müşterilerin bunu kullanmak istemesinin nedeni, sözleşmenin hizmetin kullanıcılarını etkilemeden gelişmesine izin vermesidir.

Bu yükseltmenin önemli olmasının nedeni, kullanıcıların farklı modüllerle etkileşim kurma biçimini değiştirmesidir. Magento 1'de, diğer modüllerle etkileşim kurmanın iyi bir yolu yoktu. Magento 2'deki servis sözleşmeleri ile, sistemin yapısı hakkında endişelenmenize gerek kalmadan verilere kolayca erişebilir ve bunları değiştirebilirsiniz.

Hizmet sözleşmesi mimarisi

Hizmet katmanının iki farklı arabirim türü vardır: Veri arabirimleri ve Hizmet arabirimleri. Veri arabirimleri, aşağıdaki kalıpları kullanarak veri bütünlüğünü koruyan nesnelerdir:

Theyre 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 cant be returned by getter functions.
Data entity builders are the only way to populate and modify data interfaces.

Hizmet arabirimleri, bir istemcinin kullanabileceği bir dizi genel yöntem sağlar. Üç hizmet arabirimi alt türü vardır:

Repository Interfaces
Management Interfaces
Metadata Interfaces

Havuz arayüzleri

Havuz arayüzleri, kullanıcının kalıcı veri varlıklarına erişmesini sağlar. Örneğin, Müşteri Modülündeki kalıcı veri varlıkları Tüketici, Adres ve Gruptur. Bu bize üç farklı arayüz sağlar:

CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface

Bu arayüzlerin sahip olduğu yöntemler:

Save  If theres no ID, creates a new record, and updates whats 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.

Yönetim arayüzleri

Bu arabirimler, depolarla ilgisi olmayan farklı yönetim işlevleri içerir. İşte bazı örnekler:

AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.

Örüntü sayısı sürekli artmaktadır ve bu şekilde, bu işlevlerden bazılarının bunlara eklenmesi muhtemeldir.

Meta veri arayüzleri

Meta veri arabirimleri, belirli bir varlık için tanımlanan tüm öznitelikler hakkında bilgi verir. Bu, getCustomAttribute ($ name) işleviyle erişebileceğiniz özel öznitelikleri de içerir. Bu özel özellikler şunları içerir:

EAV attributes  Defined via the administration interface for a local site. They can differ according to the site, which means that they cant be represented in the data entity interface written in PHP.
Extension attributes, for which the extension modules are used.

Referans:

https://www.interactivated.me/uk/blog/service-contracts-magento-2/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.