Magento는 관찰자를 선언하는 두 가지 방법을 제공합니다. <type>
Magento 1.x 에서 태그를 지정하고 shared
Magento 2 에서 속성 을 지정하여 싱글 톤 및 모델 (새 인스턴스)
마 젠토 1 가지 방법.
<events>
<event_name>
<observers>
<unique_observer_name>
<type>model|object|singleton|null</type>
<class>class/alias_here</class>
<method>methdNameHere</method>
</unique_observer_name>
</observers>
</event_name>
</events>
마 젠토 2 버전 :
<event name="event_name">
<observer name="unique_observer_name" instance="Class\Name\Here" method="methodNameHere" shared="true|false" />
</event>
따라서 Magento 1의 경우 <type>
태그가 모델 또는 객체 인 경우 클래스는로 인스턴스화됩니다 Mage::getModel()
. 그것의 경우 singleton
또는 누락의 IT 사용하여 인스턴스화됩니다 Mage::getSingleton()
.
Magento 2의 경우 shared
is 인 경우 false
클래스는 $this->_observerFactory->create()
(새 인스턴스)를 사용하여 인스턴스화됩니다 .
경우 shared
사실 그것은 사용하여 인스턴스화 $this->_observerFactory->get()
(싱글 톤).
두 버전 사이에서 이벤트 옵저버 아이디어는 매우 유사하지만 type
태그가 누락되고 마 젠토 2에서 대부분의 옵저버가 있기 때문에 마 젠토 1의 옵저버 대부분이 싱글 톤으로 사용됩니다 shared="false"
.
의아해 싱글 톤은 언제 사용해야하며 옵저버를 위해 언제 새 인스턴스를 사용해야합니까?
여기서 마 젠토 버전 (1 또는 2)은 중요하지 않습니다.
간단한 사용 사례는 각 접근 방식 (새 인스턴스 또는 싱글 톤)에 대해 수행합니다.
type
와 같은 태그가 없습니다 <type>singleton</type>
. 그렇다면 관찰자를 싱글 톤으로 만드는 이유는 무엇입니까?
type
속성을 전혀 사용할 필요는 없지만 일반적으로 지금 건너 뜁니다.