जवाबों:
Magento 2 में Varien_Object
समतुल्य है \Magento\Framework\DataObject.
क्लास का नाम ऑब्जेक्ट से डेटाऑबजेक्ट में बदल दिया गया था क्योंकि ऑब्जेक्ट एक आरक्षित शब्द है PHP 7
। तो आप कुछ इस तरह का उपयोग कर सकते हैं:
$obj = new \Magento\Framework\DataObject();
$obj->setItem($item);
अपडेट 2018
यह उत्तर एक वास्तविक कोड उदाहरण के संदर्भ में संभव और नहीं सबसे अधिक संभव तरीके से मूल प्रश्न के उत्तर का वर्णन करने का इरादा रखता है। हालाँकि यह प्रश्न का उत्तर देता \Magento\Framework\DataObject
है, नया है Varien_Object
, कार्यान्वयन मैगेंटो 2 सर्वश्रेष्ठ अभ्यास के अनुरूप 100% नहीं था। जैसा कि @MatthiasKleine ने बताया, अपने कोड में ऑब्जेक्ट बनाने के लिए Magento 2 का सबसे अच्छा अभ्यास है , कंस्ट्रक्टर के माध्यम से अपनी कक्षा में एक फैक्ट्री को इंजेक्ट करने के लिए Magentos DI फ्रेमवर्क का उपयोग करना और अपनी फैक्ट्री बनाने के लिए उस फैक्ट्री का उपयोग करना। इसे ध्यान में रखते हुए, अपने स्वयं के कोड में एक DataObject बनाने के लिए DI का उपयोग करके कुछ इस तरह दिखना चाहिए:
namespace My/Module;
class Example {
private $objectFactory;
public function __construct(
\Magento\Framework\DataObjectFactory $objectFactory
) {
$this->objectFactory = $objectFactory;
parent::__construct();
}
public function doSomething($item)
{
$obj = $this->objectFactory->create();
$obj->setData('item', $item);
//or
$obj->setItem($item);
}
}
DataObject
, मेरा तर्क है कि निर्भरता इंजेक्शन और कारखानों में कोई लाभ नहीं है। यह सब के बाद एक महिमामंडित सरणी है।
$obj->setData($item)
करने के लिए बेहतर होगा $obj->setItem($item)
इस तरह से आप $obj
सीधे विधि का उपयोग करने के किसी भी क्षेत्र मूल्य प्राप्त करने में सक्षम होंगे । जैसे $obj->getName()
आदि
'नए' के साथ ऑब्जेक्ट बनाने के बजाय, आपको फ़ैक्टरी वर्ग को इंजेक्ट करने के लिए DI (डिपेंडेंसी इंजेक्शन) का उपयोग करना चाहिए और उस फैक्ट्री का उपयोग करके DataObjects के नए इंस्टेंसेस बनाने चाहिए।
/**
* @var \Magento\Framework\DataObjectFactory
*/
private $dataObjectFactory;
public function __construct(
// ...
\Magento\Framework\DataObjectFactory $dataObjectFactory
) {
parent::__construct();
$this->dataObjectFactory = $dataObjectFactory;
}
public function yourCode()
{
$dataObject = $this->dataObjectFactory->create();
}