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. @method
Yö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. (?)