W Magento 2 Varien_Objectodpowiednikiem jest \Magento\Framework\DataObject.Nazwa klasy została zmieniona z Object na DataObject, ponieważ obiekt jest słowem zastrzeżonym w PHP 7. Więc możesz użyć czegoś takiego:
Ta odpowiedź miała na celu zilustrowanie odpowiedzi na pierwotne pytanie w możliwie najbardziej zwięzły sposób, a nie w kontekście prawdziwego kodu. Mimo że odpowiedział na pytanie, \Magento\Framework\DataObjectjest nowy Varien_Object, wdrożenie nie było w 100% zgodne z najlepszą praktyką Magento 2. Jak wskazał @MatthiasKleine, najlepszą praktyką Magento 2 do tworzenia obiektów w kodzie jest użycie frameworku Magentos DI, aby wstrzyknąć fabrykę do klasy za pomocą konstruktora i użyć tej fabryki do stworzenia obiektu. Mając to na uwadze, użycie DI do utworzenia obiektu DataObject we własnym kodzie powinno wyglądać mniej więcej tak:
Powoduje to ostrzeżenie podczas uruchamiania „phpcs --standard = MEQP2”: Bezpośrednia instancja obiektu (obiekt \ Magento \ Framework \ DataObject) jest odradzana w Magento 2.
Jeroen Vermeulen - MageHost
1
@ JeroenVermeulen-MageHost racja, ale to tylko ostrzeżenie , aby uświadomić sobie potencjalny błąd. W tym przypadku DataObjecttwierdzę, że zastrzyk zależności i fabryki nie przynoszą żadnych korzyści. W końcu to tylko uwielbiony zestaw.
Fabian Schmengler,
Jak przypisać wartość wielu tablic w obiekcie? @Andrew
Dhaduk Mitesh
Lepiej będzie użyć $obj->setData($item)zamiast tego. W $obj->setItem($item)ten sposób będziesz mógł uzyskać dowolną wartość pola $objbezpośredniego użycia metody. Jak $obj->getName()itp.
Patrick W
13
Zamiast tworzyć obiekt za pomocą „nowego” należy użyć DI (wstrzykiwanie zależności) w celu wstrzyknięcia klasy Factory i użyć tej fabryki do utworzenia nowych instancji DataObjects.
Ten sposób jest prawidłowym sposobem deklarowania obiektu danych, jeśli przestrzegasz standardu kodowania, takiego jak MEQP / MEQP2 / PSR itp ... Dzięki ...
Bhavik
Bardzo dziękuję -): Działa jak dla mnie urok.
Charvi Parikh
Jak przypisać wartość wielu tablic w obiekcie? @Matthias
DataObject
twierdzę, że zastrzyk zależności i fabryki nie przynoszą żadnych korzyści. W końcu to tylko uwielbiony zestaw.$obj->setData($item)
zamiast tego. W$obj->setItem($item)
ten sposób będziesz mógł uzyskać dowolną wartość pola$obj
bezpośredniego użycia metody. Jak$obj->getName()
itp.Zamiast tworzyć obiekt za pomocą „nowego” należy użyć DI (wstrzykiwanie zależności) w celu wstrzyknięcia klasy Factory i użyć tej fabryki do utworzenia nowych instancji DataObjects.
źródło