Dans Magento 2, l' Varien_Objectéquivalent est \Magento\Framework\DataObject.Le nom de la classe a été changé d'Object en DataObject car object est un mot réservé dans PHP 7. Vous pouvez donc utiliser quelque chose comme:
Cette réponse avait pour but d'illustrer une réponse à la question d'origine de la manière la plus succincte possible et non dans le cadre d'un exemple de code réel. Bien qu'elle ait répondu à la question, \Magento\Framework\DataObjectest la nouvelle Varien_Object, la mise en œuvre n'était pas à 100% conforme aux meilleures pratiques de Magento 2. Comme l'a souligné @MatthiasKleine, la meilleure pratique de Magento 2 pour créer des objets dans votre code est d'utiliser le framework Magentos DI pour injecter une fabrique dans votre classe via le constructeur et utiliser cette fabrique pour créer votre objet. Dans cet esprit, l'utilisation de DI pour créer un DataObject dans votre propre code devrait ressembler à ceci:
Cela lance un avertissement lors de l'exécution de 'phpcs --standard = MEQP2': L'instanciation d'objet directe (objet de \ Magento \ Framework \ DataObject) est déconseillée dans Magento 2.
Jeroen Vermeulen - MageHost
1
@ JeroenVermeulen-MageHost à droite, mais ce n'est qu'un avertissement , pour vous signaler une erreur potentielle . Pour le DataObject, je dirais qu'il n'y a aucun avantage à l'injection de dépendance et aux usines. C'est juste un tableau glorifié après tout.
Fabian Schmengler
Comment attribuer plusieurs valeurs de tableau dans l'objet? @Andrew
Dhaduk Mitesh
Il sera préférable d'utiliser $obj->setData($item)au lieu de De $obj->setItem($item)cette façon, vous pourrez obtenir n'importe quelle valeur de champ en $objutilisant directement la méthode. Comme $obj->getName()etc.
Patrick W
13
Au lieu de créer l'objet avec 'new', vous devez utiliser DI (Dependency Injection) pour injecter la classe Factory et utiliser cette fabrique pour créer de nouvelles instances de DataObjects.
DataObject
, je dirais qu'il n'y a aucun avantage à l'injection de dépendance et aux usines. C'est juste un tableau glorifié après tout.$obj->setData($item)
au lieu de De$obj->setItem($item)
cette façon, vous pourrez obtenir n'importe quelle valeur de champ en$obj
utilisant directement la méthode. Comme$obj->getName()
etc.Au lieu de créer l'objet avec 'new', vous devez utiliser DI (Dependency Injection) pour injecter la classe Factory et utiliser cette fabrique pour créer de nouvelles instances de DataObjects.
la source