Magento 1クラスは、依存噴射システムを使用してMagento 2で書き直します

magento.stackexchange https://magento.stackexchange.com/questions/8190

  •  16-10-2019
  •  | 
  •  

質問

周りを突っ込む Magento 2のコアコード, 、古いクラスの書き換えシステムが破裂し、新しい依存関係噴射システムに置き換えられたようです。

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

Magento 2で、ユーザーがクラスを「書き直す」ことができるモジュール構成サンプルを持っている人はいますか Mage_Catalog_Model_Product 新しいクラスで Packagename_Modulename_Model_Product, 、新しい依存関係インジェクションシステムを使用していますか?

役に立ちましたか?

解決

DI構成はdi.xmlファイルに移動され、形式が変更されました。今、好みは次のように見えます(di.xml):

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

他のヒント

内側から作業して、私は次のもので作業する書き直しを得ることができました

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

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

あなたは正しいです、クラスの書き直しは完全に排除され、DIに置き換えられました。次のメモはセクションからのものです アプリケーションフレームワークの変更:

Magento 1.x - ノード:/global // {工場名に対応するサブパス +「書き直し」リテラル}

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

Magento 2.x - ノード:/グローバル/DI/エイリアス

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

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

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top