উত্তর:
Magento 2 Varien_Object
সমতুল্য হয় \Magento\Framework\DataObject.
বর্গ নাম DataObject আপত্তি থেকে পরিবর্তিত করা হয়েছে কারণ বস্তুর একটি হল সংরক্ষিত শব্দ মধ্যে PHP 7
। সুতরাং আপনি যেমন কিছু ব্যবহার করতে পারেন:
$obj = new \Magento\Framework\DataObject();
$obj->setItem($item);
আপডেট 2018
এই উত্তরটি উত্তরটির মূল প্রশ্নের উত্তর সর্বাধিক সংক্ষিপ্ত উপায়ে ব্যাখ্যা করতে চেয়েছিল এবং বাস্তব কোড উদাহরণের প্রসঙ্গে নয়। যদিও এটি প্রশ্নের উত্তর দিয়েছে, \Magento\Framework\DataObject
নতুন Varien_Object
, তবে বাস্তবায়ন 100% ম্যাজেন্টো 2 সেরা অনুশীলনের সাথে সামঞ্জস্য ছিল না। @ ম্যাথিয়াসক্লিন যেমন উল্লেখ করেছেন, আপনার কোডে অবজেক্ট তৈরির জন্য ম্যাজেন্টো 2 সেরা অনুশীলন হ'ল ম্যাগেন্টোস ডিআই ফ্রেমওয়ার্কটি কনস্ট্রাক্টরের মাধ্যমে আপনার ক্লাসে একটি কারখানা ইনজেক্ট করার জন্য এবং সেই ফ্যাক্টরিটি আপনার অবজেক্ট তৈরি করতে ব্যবহার করা। এই বিষয়টি মনে রেখে, ডিআই ব্যবহার করে আপনার নিজের কোডে একটি ডেটাঅবজেক্ট তৈরি করতে এই জাতীয় কিছু দেখতে পাওয়া উচিত:
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()
ইত্যাদি
'নতুন' দিয়ে অবজেক্টটি তৈরি করার পরিবর্তে কারখানার ক্লাসটি ইনজেক্ট করতে আপনার ডিআই (ডিপেন্ডেন্সি ইনজেকশন) ব্যবহার করা উচিত এবং ডেটাঅবজেক্টসের নতুন দৃষ্টান্ত তৈরি করতে সেই কারখানাটি ব্যবহার করা উচিত।
/**
* @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();
}