Magentoでは、用語の上書きと書き換えの両方が同じですか。私はこれをたくさん検索しましたが、答えは見つかりませんでした。
ありがとう
簡単な答え: はい。ただし、話す相手によって異なります。
すべての書き換えはオーバーライドですが、すべてのオーバーライドが書き換えであるとは限りません。Magentoでの書き換えは、構成ベースのクラス オーバーライドのみを参照する必要があります。ファクトリ メソッドは、MVC 型をインスタンス化するためにフレームワークによって使用されます。
Mage_Core_Model_Layout->createBlock()
Mage::helper()
Mage::getModel()
Mage::getResourceModel()
これらのメソッドは通常、特定のクラス (例: yields ) をインスタンス化するために、クラス グループ (例: catalog
) をクラス プレフィックス (例: ) に一致させます。このマッピングにより、開発者はクラス引数 ( &など) に関連付けられた特定の xpath を指定して、インスタンス化する代替クラスを指定できます。そこから、適切なオーバーライドと拡張の動作を実現するために、必要に応じて継承を使用するのは開発者の責任です。Mage_Catalog_Model
Mage::getModel('catalog/product')
Mage_Catalog_Model_Product
'catalog/product'
global/models/catalog/rewrite/product
オーバーライドを達成するためのメカニズムは他にもありますが、その中で最も一般的なのは、いわゆる「インクルード パス ハック」です。これにより、「下位」の autoload ディレクトリからのクラスを上位レベルのディレクトリで次の順序で (再) 定義できます。優先順位 ( app/code/local/に注意してください):
このスタイルのオーバーライドは、コア コードを変更する最後の手段と見なす必要があります。正当な使用例 (特に DRY に従う場合) がありますが、アップグレードでは明らかでない場合があります。