依存性注入システムを備えたMagento 2のMagento 1クラスの書き換え


10

Magento 2のコアコードをざっと見て、古いクラスの書き換えシステムが取り除かれ、新しい依存関係注入システムに置き換えられたようです。

残念ながら、この新しいシステムのドキュメントはありません

Magento 2では、新しい依存関係注入システムを使用して、ユーザーがMagento 2でクラスMage_Catalog_Model_Productを新しいクラスPackagename_Modulename_Model_Productで「書き換え」できるモジュール構成サンプルがありますか?


私は、Magentoの2.0質問は許さまだいなかったと思っmeta.magento.stackexchange.com/questions/79/...
マリウス

回答:


10

di構成はdi.xmlファイルに移動され、形式が変更されました。これで、設定は次のようになります(di.xml)。

<config>
    <preference for="{Interface_Or_Class_Name}" type="{Preferred_Class_Name}" />
</config>

それがクラスの書き換えである場合、設定ノードの代わりにプラグインを使用する方が良いですか?
huzefam

2
コアクラスの動作を置き換える必要がある場合は、プリファレンスを使用する必要があります。いくつかのコアメソッドの動作を置き換える必要がある場合は、$ proceed()を呼び出さないアラウンドリスナーでプラグインを使用する必要があります。いくつかのコアメソッドまたはクラスに動作を追加する必要がある場合は、プラグインを使用する必要があります。
Anton Kril、2015年

5

内側から作業して、私は以下で書き換え作業をすることができました

<global>    
    <di>    
        <preferences>
            <Mage_Catalog_Model_Product>Packagename_Modulename_Model_Product</Mage_Catalog_Model_Product>
        </preferences> 
    </di>
</global>

ただし、依存性注入の実装にはより多くのシステムコードがあるため、上記がMagento 2の最終リリースバージョンで機能するかどうかは明確ではありません。


それで、彼らは基本的に「エイリアス」の名前を好みに変更し、それをトップに移動したようですか?面白い。ドキュメントの更新が公開されるのを楽しみにしています。ピーターはそれを持っていると言いましたが、それはすべてドキュメントサイト、少なくともIIRCにプッシュされていません。
davidalger 2013

5

確かに、クラスの書き換えは完全に排除され、DIに置き換えられました。以下のメモは、アプリケーションフレームワークの変更に関するセクションからの抜粋です。

Magento 1.x —ノード:/ global // {ファクトリー名に対応するサブパス+「リライト」リテラル}

<global>
...
    <models>
        <core>
            <rewrite>
                <url>My_Module_Model_Url</url>
            </rewrite>
        </core>
    </models>
...
</global>

Magento 2.x —ノード:/ global / di / aliases

<global>
...
    <di>
        <aliases>
            <Mage_Core_Model_Url>My_Module_Model_Url</Mage_Core_Model_Url>
        </aliases>
    </di>
...
</global>

Magento 2.0で実行されているモジュールでこれを利用したことはありませんが、モジュールごとの書き換えにxmlの複雑な階層を使用するのではなく、基本的にクラス名のエイリアスを定義しているようです。


1
アプリケーションフレームワークページの+1。ただし、これは私が取得した最新のMagento 2スナップショットでは機能しません。
アランストーム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.