সুতরাং ম্যাজেন্টো একটি পর্যবেক্ষক ঘোষণার 2 উপায় সরবরাহ করে। সিঙ্গেলন এবং মডেল (নতুন উদাহরণ) <type>
ম্যাজেন্টো 1.x এ ট্যাগটি নির্দিষ্ট করে shared
এবং ম্যাজেন্টো 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>
সুতরাং ম্যাজেন্টো 1 এর ক্ষেত্রে <type>
ট্যাগটি যদি মডেল বা অবজেক্ট হয় তবে ক্লাসটি ইনস্ট্যান্ট করা হবে Mage::getModel()
। এটি singleton
বা এটি অনুপস্থিত থাকলে এটি ব্যবহার করে তাত্ক্ষণিকভাবে ব্যবহৃত হয় Mage::getSingleton()
।
ম্যাজেন্টো 2 এর ক্ষেত্রে যদি shared
হয় false
তবে ক্লাসটি ইনস্ট্যান্ট করা হয় $this->_observerFactory->create()
(নতুন উদাহরণ)। সত্য
হলে shared
এটি $this->_observerFactory->get()
(সিঙ্গলটন) ব্যবহার করে তাত্ক্ষণিকভাবে প্রয়োগ করা হয়।
দুটি সংস্করণের মধ্যে ইভেন্ট পর্যবেক্ষকের ধারণাটি খুব একইরকম, তবে ম্যাজেন্টো 1-এর বেশিরভাগ পর্যবেক্ষকই একক হিসাবে ব্যবহৃত হয়, কারণ type
ট্যাগটি অনুপস্থিত এবং ম্যাগানো 2-তে বেশিরভাগ পর্যবেক্ষক (আমার মনে হয়) রয়েছে shared="false"
।
আমি হতবাক কখন আমি সিলেটলেট ব্যবহার করব এবং কখন পর্যবেক্ষকদের জন্য নতুন দৃষ্টান্ত ব্যবহার করব?
ম্যাজেন্টো সংস্করণ (1 বা 2) এখানে গুরুত্বপূর্ণ নয়।
একটি সাধারণ ব্যবহারের ক্ষেত্রে প্রতিটি পদ্ধতির (নতুন উদাহরণ বা সিঙ্গেলটন) কাজ করতে হবে
type
ট্যাগই একই জিনিস নয় <type>singleton</type>
। তাহলে আমরা পর্যবেক্ষকদের সিলেটলেট তৈরির কারণ কী?
type
এট্রিবিউটটি ব্যবহার করা মোটেই প্রয়োজন হয় না , যাতে আমি এখনই এটিকে এড়িয়ে যাই।