एक और मैगनेटो 2 में एक टिप्पणी को दोहराते हुए
यदि आपको कुछ गणना मूल्य साझा करने की आवश्यकता है, तो गणना व्यवहार को अलग ऑब्जेक्ट पर रखें और इसे उन ब्लॉकों से कॉल करें जिन्हें उस मूल्य की आवश्यकता होती है। रजिस्ट्री को हतोत्साहित किया जाता है क्योंकि यह वैश्विक परिवर्तनशील स्थिति है और आप कभी भी निश्चित नहीं हैं कि आपको वहां से क्या मिलेगा।
क्या Magento 2 में एक वस्तु बनाने का एक तरीका है अपरिवर्तनीय स्थिति के साथ? रजिस्ट्री का उपयोग करना ( Magento\Framework\Registry
) इसलिए हतोत्साहित किया जाता है क्योंकि यह वैश्विक परिवर्तनशील स्थिति है (क्योंकि, क्योंकि register
विधि आपको मौजूदा कुंजी को बदलने की अनुमति नहीं देती है, आप परेशान हो सकते हैं और फिर उस कुंजी को रीसेट कर सकते हैं )।
हालाँकि - Magento में किसी भी वस्तु के लिए एक ही समस्या मौजूद है। 2. अगर मैं एक ऑब्जेक्ट बनाने के लिए था
namespace Pulsestorm\Helloworld\Model;
use Magento\Framework\DataObject;
class ViewVars extends DataObject
{
}
फिर स्वचालित कंस्ट्रक्टर निर्भरता इंजेक्शन सुनिश्चित करता है कि कोई भी उस साझा वस्तु को हड़प सके। यदि ऑब्जेक्ट अनसेंडेड है, तो व्यू / ब्लॉक इसे हड़प नहीं सकता है।
सिद्धांत रूप में, हम कुछ ऐसा कर सकते थे
namespace Pulsestorm\Helloworld\Model;
class ViewVars
{
protected $_data=false;
protected function setData($data)
{
if($_data)
{
throw new Exception("Immutable");
}
$this->_data = $data;
}
public function getData()
{
return $this->_data;
}
}
लेकिन यह एक कार्य के लिए बहुत सारे काम की तरह लगता है जैसे कि एक दृश्य के लिए अलग-अलग चर निर्धारित करना । क्या मैगेंटो 2 में एक बेहतर तरीका है कि मैं अपरिवर्तनीय डेटा ऑब्जेक्ट नहीं बना सकता हूं, जिसके बारे में मुझे जानकारी नहीं है?