エクステンションはどのようにしてre造に不可能なクラスを無効にしますか

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

  •  16-10-2019
  •  | 
  •  

質問

私は有効にするために小さな拡張機能をまとめるつもりでした テンプレートは、グローバル範囲の下でヒントを示します, 、しかし、書き直そうとして立ち往生しました core/template.

クラスは、Magentoの方法の1つを介してインスタンス化されたクラスの作業のみを書き直し、helper, getModel, getSingleton)。抽象的で重く拡張されたクラスの場合、あなたはのオプションが残されているようです local/Mage オーバーライド。

2つの質問:

  1. 避けるための賢い方法はありますか? local/Mage 常にオーバーライド?
  2. そうでない場合、コミュニティ拡張にそのようなオーバーライドをどのように含めるのですか?
役に立ちましたか?

解決

1)コミュニティに提供する拡張機能は、コミュニティコードプールの下にある必要があります。

2)すべきではありませんが、できます。 デメテル Magento 1では多くの無視されています。

反射の使用を含む、オーバーライドする必要性をほとんど常に回避する方法があります しばらく前にヴィナイが述べたように.

回避策にはマイナス面が大きすぎる場合は、クラス定義の所有権を取得する必要があります。ユーザーが意識されている場合、次のいずれかを実行できます。

  1. コミュニティコードプールで、メイジの下で修正された定義を提供します| Varien |必要に応じてzend namespace。可能性のある懸念は、エンドユーザーが同じことをしたかもしれないということです。
  2. 上記のように、ただし新しいコードプールで:新しいコーデプールをブートストラップにプレップすると、使用を使用するパスが含まれます set_include_path(). 。欠点:もっと stat()オートローダーによって引き起こされるing、およびインクルードパス操作は、ブートストラップの外側にあるため、非自明です。
  3. 可能であれば、通常の場所からロードされる前に、たとえば明示的に定義を自分で提供します include()名前空間の下の標準以外の場所からそれを届けます。

ケースバイケースのニーズをここで聞こえます - 誰かがアイデアを持っています。管理者範囲のテンプレートパスのヒントについては、 私の答えを見てください PHPさえ必要ありません。

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