Magiczne pobieracze na Varien_Object
(M1) i DataObject
(M2) są powszechną praktyką, ale w Magento 2 korzystanie z nich jest niewłaściwe.
Dobry:
- łatwy do odczytu / zapisu
Zły
- Powoduje to problemy podczas używania cyfr w kluczach (patrz: Magento 2: w inny sposób uzyskaj pole kolekcji lub uzyskaj atrybut produktu niestandardowego za pomocą skrzynki na wielbłąda )
- narzędzia do analizy kodu narzekają na nieistniejące metody
Pytanie
W Magento 2 mamy dwie nowe metody:
getDataByKey($key)
getDataByPath($path)
Czy jest jakiś dobry powód, aby nadal używać getData($key)
lub magicznych pobieraczy?
Edytować:
@Vinai dzięki. Nie wspomniałem o @method
metodzie, ponieważ moje podejście było zupełnie inne.
Pomaga tylko IDE, ale nie ma wpływu na inne rzeczy.
Istnieje kilka scalonych PR, które są „mikrooptymalizacjami”, takimi jak rzutowanie na (int)
zamiast intval()
lub uzyskanie rozmiaru tablicy poza pętlami (nawet dla małych tablic).
Z drugiej strony są
magiczne pobieracze, które mają pewne „narzuty”, jak opisał Marius…
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
mehtods muszą także wykonać 2-3 dodatkowe kontrole ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
W przypadku własnego kodu całkowicie zgadzam się na preferowanie prawdziwych metod, ale w tych samych przypadkach nie jest to możliwe ... np. Utworzyłeś niestandardowe zdarzenie ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Używanie 3. z /** @var some $value */
wydaje mi się najlepsze. (?)