Respuestas:
En Magento 2, el Varien_Object
equivalente es \Magento\Framework\DataObject.
El nombre de la clase se cambió de Object a DataObject porque object es una palabra reservada en PHP 7
. Entonces podrías usar algo como:
$obj = new \Magento\Framework\DataObject();
$obj->setItem($item);
Actualización 2018
Esta respuesta pretendía ilustrar una respuesta a la pregunta original de la manera más sucinta posible y no en el contexto de un ejemplo de código real. Aunque sí respondió la pregunta, \Magento\Framework\DataObject
es la nueva Varien_Object
, la implementación no fue 100% en línea con las mejores prácticas de Magento 2. Como señaló @MatthiasKleine, la mejor práctica de Magento 2 para crear objetos en su código es usar el marco Magentos DI para inyectar una fábrica en su clase a través del constructor y usar esa fábrica para crear su objeto. Con eso en mente, usar DI para crear un DataObject en su propio código debería verse así:
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
, diría que no hay beneficio en la inyección de dependencia y las fábricas. Es solo una variedad glorificada después de todo.
$obj->setData($item)
lugar de De $obj->setItem($item)
esta manera, podrá obtener cualquier valor de campo de $obj
usar el método directamente. Me gusta, $obj->getName()
etc.
En lugar de crear el objeto con 'nuevo', debe usar DI (Inyección de dependencia) para inyectar la clase Factory y usar esa fábrica para crear nuevas instancias de 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();
}