Dalam Magento 2 yang Varien_Objectsetara adalah \Magento\Framework\DataObject.Nama kelas berubah dari Object ke DataObject karena objek adalah kata reserved di PHP 7. Jadi Anda bisa menggunakan sesuatu seperti:
Jawaban ini dimaksudkan untuk menggambarkan jawaban pertanyaan awal dengan cara yang sesingkat mungkin dan tidak dalam konteks contoh kode nyata. Meskipun menjawab pertanyaan, \Magento\Framework\DataObjectapakah ini baru Varien_Object, implementasinya tidak 100% sejalan dengan praktik terbaik Magento 2. Seperti @MatthiasKleine tunjukkan, Magento 2 praktik terbaik untuk membuat objek dalam kode Anda adalah dengan menggunakan kerangka Magentos DI untuk menyuntikkan pabrik ke kelas Anda melalui konstruktor dan menggunakan pabrik itu untuk membuat objek Anda. Dengan mengingat hal itu, menggunakan DI untuk membuat DataObject dalam kode Anda sendiri akan terlihat seperti ini:
Ini melempar peringatan ketika menjalankan 'phpcs --standard = MEQP2': Instansiasi objek langsung (objek \ Magento \ Framework \ DataObject) tidak disarankan dalam Magento 2.
Jeroen Vermeulen - MageHost
1
@ JeroenVermeulen-MageHost benar, tapi itu hanya peringatan , untuk membuat Anda menyadari kesalahan potensial . Untuk itu DataObject, saya berpendapat bahwa tidak ada manfaat dalam injeksi ketergantungan dan pabrik. Bagaimanapun, ini hanyalah array yang dimuliakan.
Fabian Schmengler
Bagaimana cara menetapkan nilai array ganda pada objek? @ Andrew
Dhaduk Mitesh
Ini akan lebih baik untuk digunakan $obj->setData($item)daripada $obj->setItem($item)dengan cara ini Anda akan bisa mendapatkan nilai bidang $objmenggunakan metode secara langsung. Seperti $obj->getName()dll.
Patrick W
13
Alih-alih membuat objek dengan 'baru' Anda harus menggunakan DI (Dependency Injection) untuk menyuntikkan kelas Factory dan menggunakan pabrik itu untuk membuat instance baru dari DataObjects.
Cara ini adalah cara yang benar untuk mendeklarasikan objek data, ketika Anda mengikuti standar pengkodean seperti MEQP / MEQP2 / PSR dll ... Terima kasih ...
Bhavik
Terima kasih banyak -): Ini berfungsi seperti pesona bagi saya.
Charvi Parikh
Bagaimana cara menetapkan nilai array ganda pada objek? @Matthias
DataObject
, saya berpendapat bahwa tidak ada manfaat dalam injeksi ketergantungan dan pabrik. Bagaimanapun, ini hanyalah array yang dimuliakan.$obj->setData($item)
daripada$obj->setItem($item)
dengan cara ini Anda akan bisa mendapatkan nilai bidang$obj
menggunakan metode secara langsung. Seperti$obj->getName()
dll.Alih-alih membuat objek dengan 'baru' Anda harus menggunakan DI (Dependency Injection) untuk menyuntikkan kelas Factory dan menggunakan pabrik itu untuk membuat instance baru dari DataObjects.
sumber