2013-06-14 12 views

Odpowiedz

7

Krótka odpowiedź: tak, ale to zależy od tego kim rozmawiać.

Wszystkie przepisane są przesłonięcia, ale nie wszystkie przesłonięcia są przepisywane. A przepisać w języku Magento powinien odnosić się tylko do nadpisań klas opartych na konfiguracji. Metody fabryczne są wykorzystywane przez ramach instancji typów MVC:

  • Mage_Core_Model_Layout->createBlock()
  • Mage::helper()
  • Mage::getModel()
  • Mage::getResourceModel()
  • itp ....

Te sposoby ogólnie pasuje grupa klas (np. catalog) na prefiks klasy (np. sol. Mage_Catalog_Model) w celu utworzenia instancji konkretnej klasy (np. Mage::getModel('catalog/product') daje Mage_Catalog_Model_Product). To odwzorowanie umożliwia programistom określenie określonej ścieżki xpath związanej z argumentem klasy (na przykład 'catalog/product' & global/models/catalog/rewrite/product) w celu określenia alternatywnej klasy do utworzenia instancji. Stąd odpowiedzialność za dziedziczenie, stosownie do tego, aby osiągnąć prawidłowe przesuwanie się, zależy od programisty.

Istnieją inne mechanizmy uzyskiwania przesłonięć, z których najczęstszym jest tak zwany "włamać się do ścieżki", który pozwala na zdefiniowanie klas z "niższych" katalogów automatycznych (re) w katalogach wyższego poziomu w następujący porządek pierwszeństwa (zauważ, że app/code/local/):

  • app/code/społeczność/
  • app/code/core/
  • lib/

Ten styl ręcznym należy uznać za przypadek oznacza ostatniej zmiany kodu rdzenia. Ma uzasadnione przypadki użycia (szczególnie w przypadku przestrzegania DRY), ale może być nieoczywiste w aktualizacji.

+0

Wielkie dzięki Ben !! –