タグ付けされた質問 「design-patterns」

1
コレクションの履歴はMagento 2にありますか?
現在Magento 2(2.1.2)にある多くのコードは、Magento 1から多かれ少なかれ移植されており、将来、多くのコードが同等のものに置き換えられることを知っています。この点で、Magento 2のコレクションの未来はどうなっているのでしょうか。 説明させてください: Magento 1: Magento 1では、次のようなコレクションを取得するために使用されます。 $products = Mage::getModel('catalog/product')->getCollection(); その後、フィルターやその他の操作をコレクションに適用できます。 $products->addAttributeToFilter('price', ['gteq' => 10]); $products->addFieldToFilter('created_at', ['lt' => '2016-10-10']); $products->setPageSize(10); // ... etc ... そして最後になりましたが、コレクションはモデルを返します。 foreach ($products as $product) { echo get_class($product); // Mage_Catalog_Model_Product } Magento 2: Magentoは抽象化の多くの新しいレイヤーを追加し、より強固な作業方法を実装します。つまり、エンティティのリストが必要な場合は、リポジトリから要求します。 $productResults = $this->productRepository->getList($searchCriteria); 私たちは、フィルタを適用したい場合は、私たちはの組み合わせを使用しSearchCriteriaBuilder、FilterGroupBuilder、FilterBuilderとSortOrderBuilder: $this->searchCriteriaBuilder->addSortOrder( $this->sortOrderBuilder ->setField('created_at') ->setAscendingDirection() ->create() ); …

2
Magento2のMagento2ファクトリーパターンの利点1
Magento 2は、注射不可のファクトリクラスを使用しています。 たとえば製品クラス:ProductFactory たとえば顧客クラス:CustomerFactory 私はここで工場パターンのタイプが何であるか理解できませんか? 1つのファクトリクラスに関連付けられている各クラスのため。私はその何かが重複していると考えています。 なぜ私たちはのための抽象工場作成するべきではないCustomerFactory、ProductFactoryなど? また、たとえば: 私たちは、渡すことができますAbstractFactoryタイプのチェックのための代わりProductFactoryにProductRepositoryクラスのコンストラクタ。 したがって、ProductRepositoryとの間の密結合を避けることができますProductFactory 抽象ファクトリークラス: namespace Magento\Framework\ObjectManager\Code\Generator; /** * Abstract Factory class */ abstract class AbstractFactory { /** * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface */ protected $_objectManager = null; /** * Instance name to create * * @var string */ protected $_instanceName …


1
Magento 2:不変状態のデータオブジェクトを作成しますか?
別のMagento 2のコメントをダブテールにする 計算された値を共有する必要がある場合は、計算動作を配置してオブジェクトを分離し、その値を必要とするブロックから呼び出します。レジストリはグローバルな変更可能な状態であり、そこから何が得られるか確信が持てないため、推奨されません。 Magento 2で不変状態のオブジェクトを作成する方法はありますか?レジストリ(Magento\Framework\Registry)はグローバルな変更可能な状態であるため、register使用しないことをお勧めします(この方法では既存のキーを変更できないが、そのキーを設定解除してリセットできるためと考えられます)。 ただし、Magento 2のすべてのオブジェクトに同じ問題が存在します。オブジェクトを作成する場合 namespace Pulsestorm\Helloworld\Model; use Magento\Framework\DataObject; class ViewVars extends DataObject { } 次に、自動コンストラクタ依存性注入により、誰でもその共有オブジェクトを取得できるようになります。オブジェクトが共有されていない場合、ビュー/ブロックはオブジェクトを取得できません。 理論的には、次のようなことができます namespace Pulsestorm\Helloworld\Model; class ViewVars { protected $_data=false; protected function setData($data) { if($_data) { throw new Exception("Immutable"); } $this->_data = $data; } public function getData() { return $this->_data; } } しかし、それはビューの個々の変数を設定するのと同じくらい一般的なタスクの多くの作業のようです。Magento 2で、知らない不変のデータオブジェクトを作成するより良い方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.