Trong Magento 2 Varien_Object
tương đương là \Magento\Framework\DataObject.
Tên lớp đã được thay đổi từ Object thành DataObject vì đối tượng là một từ dành riêng trong PHP 7
. Vì vậy, bạn có thể sử dụng một cái gì đó như:
$obj = new \Magento\Framework\DataObject();
$obj->setItem($item);
Cập nhật 2018
Câu trả lời này nhằm minh họa một câu trả lời cho câu hỏi ban đầu theo cách cô đọng nhất có thể và không phải trong bối cảnh của một ví dụ mã thực. Mặc dù nó đã trả lời câu hỏi, \Magento\Framework\DataObject
là cái mới Varien_Object
, nhưng việc triển khai không phù hợp với thực tiễn tốt nhất của Magento 2. Như @MatthiasKleine đã chỉ ra, Magento 2 cách tốt nhất để tạo các đối tượng trong mã của bạn là sử dụng khung Magentos DI để đưa một nhà máy vào lớp của bạn thông qua hàm tạo và sử dụng nhà máy đó để tạo đối tượng của bạn. Với ý nghĩ đó, sử dụng DI để tạo DataObject trong mã của riêng bạn sẽ trông giống như thế này:
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);
}
}