回答:
Magentoの2にVarien_Object
等価である\Magento\Framework\DataObject.
オブジェクトであるため、クラス名のDataObjectにObjectから変更された予約語におけるPHP 7
。したがって、次のようなものを使用できます。
$obj = new \Magento\Framework\DataObject();
$obj->setItem($item);
更新2018
この回答は、実際のコード例のコンテキストではなく、可能な限り簡潔な方法で元の質問に対する回答を説明することを目的としています。\Magento\Framework\DataObject
新しい質問ですが、Varien_Object
Magento 2のベストプラクティスに沿った実装は100%ではありませんでした。@MatthiasKleineが指摘したように、コード内にオブジェクトを作成するMagento 2のベストプラクティスは、Magento DIフレームワークを使用して、コンストラクターを介してクラスにファクトリーを注入し、そのファクトリーを使用してオブジェクトを作成することです。それを念頭に置いて、DIを使用して独自のコードでDataObjectを作成すると、次のようになります。
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()
など
「new」でオブジェクトを作成する代わりに、DI(Dependency Injection)を使用してFactoryクラスを注入し、そのファクトリを使用してDataObjectの新しいインスタンスを作成する必要があります。
/**
* @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();
}