Sihir getter pada Varien_Object
(M1) dan DataObject
(M2) adalah praktik umum, tetapi dengan Magento 2 rasanya salah menggunakannya.
Baik:
- mudah dibaca / ditulis
Buruk
- Ini menyebabkan masalah saat menggunakan angka dalam kunci (lihat: Magento 2: cara berbeda mendapatkan bidang koleksi atau Dapatkan atribut Produk Kustom menggunakan kasing unta )
- alat analisis kode mengeluh tentang metode yang tidak ada
Pertanyaan
Dengan Magento 2 kami memiliki dua metode baru:
getDataByKey($key)
getDataByPath($path)
Apakah ada alasan bagus untuk tetap menggunakan getData($key)
atau mendapatkan sihir?
Edit:
@Vinai terima kasih. Saya tidak menyebutkan @method
metodenya, karena pendekatan saya sangat berbeda.
Ini hanya membantu IDE, tetapi tidak berdampak pada hal-hal lain.
Ada beberapa PR gabungan yang merupakan "optimasi mikro" seperti casting untuk (int)
bukannya intval()
atau mendapatkan ukuran array di luar loop (bahkan untuk array kecil).
Di sisi lain ada
getter ajaib, yang memiliki "overhead" seperti yang dijelaskan Marius ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
mehtods juga harus 2-3 pemeriksaan tambahan ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Untuk kode sendiri, sepenuhnya setuju untuk memilih metode nyata, tetapi dalam kasus yang sama tidak mungkin ... misalnya Anda telah membuat acara khusus ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Menggunakan ke-3 dengan yang /** @var some $value */
terbaik bagi saya. (?)