Varien_Object(M1) ve DataObject(M2) üzerindeki sihirli alıcılar yaygın bir uygulamadır, ancak Magento 2 ile kullanmak yanlıştır.
İyi:
- kolay okuma / yazma
Kötü
- Tuşlarda rakam kullanırken sorunlara neden olur (bkz. Magento 2: koleksiyonun farklı bir şekilde elde etme alanı veya deve durumunu kullanarak Özel Ürün özelliğini alma )
- kod analiz araçları mevcut olmayan yöntemlerden şikayet eder
Soru
Magento 2 ile iki yeni yöntemimiz var:
getDataByKey($key)getDataByPath($path)
Hala kullanmak için iyi bir neden getData($key)veya sihirli alıcılar var mı?
Düzenle:
@Vinai teşekkürler. @methodYönteme değinmedim , çünkü yaklaşımım oldukça farklıydı.
Yalnızca IDE'ye yardımcı olur, ancak diğer şeyler üzerinde hiçbir etkisi yoktur.
Orada bu konuda birkaç mergedf PRs "mikro-optimizasyonlar" için döküm gibi are (int)yerine intval()ya da (hatta küçük diziler için) dizi boyutunda dış döngüler olsun.
Öte yandan
Marius tarif ettiği gibi "havai" bazı büyülü getters, ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));getData($key)mehtods da 2-3 ek kontrol yapmak zorunda ...if ('' === $key) {if (strpos($key, '/')) {if ($index !== null) {
Kendi kodu için tamamen gerçek yöntemleri tercih etmeyi kabul ediyorum, ancak aynı durumlarda muhtemelen ... örneğin özel bir etkinlik oluşturdunuz ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
3 ile kullanmak /** @var some $value */benim için en iyisidir. (?)