Magento ile ilgili çok fazla deneyimim var, ancak bir modelin hangi yolunun yüklenmesinin doğru olduğunu ve neden olduğunu anlamadığımı fark ettim. Konu hakkında yapabileceğim her şeyi okudum ama böyle şeyler açıklayan insanlar açıklamak için yeterince derin gitmiyor, neden bu yöntemi başka bir yöntem yerine kullanmıyorlar. Diyelim ki yüklemek istediğim model için bir depo yok.
Şimdiye kadar yapıcıda her zaman model kullanıyordum ve sonra yükledim.
public function __construct(
\Vendor\Module\Model\Something $somethingModel
) {
$this->somethingModel = $somethingModel;
}
public function getTestById($id) {
return $this->somethingModel->load($id);
}
Ve her zaman amaçlandığı gibi çalıştı, eminim ya da en azından çekirdekte yaygın olarak kullanıldığından eminim.
Ama sonra meslektaşlarımdan birinin
modelFactory->create()->load($id)
Fabrikaların yeni bir varlık oluşturmak için kullanıldığını anladığım kadarıyla, örneğin, yeni bir ürün oluşturmak istersem, o zaman fabrikayı oluşturabilir, verilerle doldurabilir ve kaydedebilirim. Ama sonra tekrar, konuyu araştırmaya başladım ve modeli bu şekilde yükleyen ve başkalarının sadece modelleri yüklemekten vazgeçiren Fabian Schmengler'den ( Magento 2'de Bir Depo ve Fabrika Ne Zaman Kullanmalıyız? ) Örnek gördüm. neden bunun 'hizmet sözleşmesinin bir parçası olmadığını' söylemenin yanı sıra nedenini açıklamayın. Depoların hizmet sözleşmelerinin bir parçası olduğunu anladığım kadarıyla, bir depo aracılığıyla bulunmayan modelleri yüklemek söz konusu olduğunda burada herhangi bir bağlantı görmüyorum.
Biraz daha karışıklık eklemek için, oluşturulan modelFactory'den resourceModel'i alarak modeli yüklemenin bir yolunu buldum, Vinai Kopp ( Magento 2'de özel bir modül için hizmet sözleşmesi nasıl uygulanır? ) Ve şimdi ben kaynak modellerini doğrudan kullanmamam gerektiğini her zaman okuduğum için tamamen kayboldum.
Öyleyse, biri bana hangisinin doğru yol olduğunu ve diğer tüm yöntemler yerine neden kullanmam gerektiğini söyleyebilir mi?