In Magento 2 Varien_Objectlautet die Entsprechung \Magento\Framework\DataObject.Der Klassenname wurde von Object in DataObject geändert, da object ein reserviertes Wort in ist PHP 7. Sie könnten also Folgendes verwenden:
Diese Antwort sollte die Antwort auf die ursprüngliche Frage so kurz wie möglich und nicht im Kontext eines realen Codebeispiels darstellen. Obwohl es die Frage beantwortet hat, \Magento\Framework\DataObjecthandelt es sich um das Neue Varien_Object, die Implementierung entsprach nicht zu 100% den Best Practices von Magento 2. Wie @MatthiasKleine hervorhob, besteht die beste Vorgehensweise von Magento 2 zum Erstellen von Objekten in Ihrem Code darin, mithilfe des Magentos DI-Frameworks eine Factory über den Konstruktor in Ihre Klasse einzufügen und diese Factory zum Erstellen Ihres Objekts zu verwenden. In diesem Sinne sollte die Verwendung von DI zum Erstellen eines DataObject in Ihrem eigenen Code ungefähr so aussehen:
Dies gibt eine Warnung aus, wenn 'phpcs --standard = MEQP2' ausgeführt wird: Direkte Objektinstanziierung (Objekt von \ Magento \ Framework \ DataObject) wird in Magento 2 nicht
empfohlen
1
@ JeroenVermeulen-MageHost richtig, aber es ist nur eine Warnung , um Sie auf einen möglichen Fehler aufmerksam zu machen . Für die DataObjectwürde ich argumentieren, dass es keinen Nutzen in Abhängigkeitsinjektion und Fabriken gibt. Es ist schließlich nur eine verherrlichte Reihe.
Fabian Schmengler
Wie kann ich dem Objekt mehrere Array-Werte zuweisen? @ Andrew
Dhaduk Mitesh
Es ist besser, $obj->setData($item)anstelle von zu verwenden. Auf $obj->setItem($item)diese Weise können Sie jeden Feldwert für $objdie direkte Verwendung der Methode abrufen. Wie $obj->getName()etc.
Patrick W
13
Anstatt das Objekt mit "new" zu erstellen, sollten Sie DI (Dependency Injection) verwenden, um die Factory-Klasse zu injizieren, und diese Factory verwenden, um neue Instanzen von DataObjects zu erstellen.
DataObject
würde ich argumentieren, dass es keinen Nutzen in Abhängigkeitsinjektion und Fabriken gibt. Es ist schließlich nur eine verherrlichte Reihe.$obj->setData($item)
anstelle von zu verwenden. Auf$obj->setItem($item)
diese Weise können Sie jeden Feldwert für$obj
die direkte Verwendung der Methode abrufen. Wie$obj->getName()
etc.Anstatt das Objekt mit "new" zu erstellen, sollten Sie DI (Dependency Injection) verwenden, um die Factory-Klasse zu injizieren, und diese Factory verwenden, um neue Instanzen von DataObjects zu erstellen.
quelle