I getter magici su Varien_Object
(M1) e DataObject
(M2) sono una pratica comune, ma con Magento 2 sembra sbagliato usarlo.
Buona:
- facile da leggere / scrivere
Cattivo
- Causa problemi quando si usano le cifre nelle chiavi (vedi: Magento 2: in modo diverso ottenere il campo di una raccolta o ottenere l'attributo del prodotto personalizzato usando la custodia del cammello )
- gli strumenti di analisi del codice lamentano metodi inesistenti
Domanda
Con Magento 2 abbiamo due nuovi metodi:
getDataByKey($key)
getDataByPath($path)
C'è qualche buona ragione per usare ancora getData($key)
o qualche getter magico?
Modificare:
@Vinai grazie. Non ho menzionato il @method
metodo, perché il mio approccio era piuttosto diverso.
Aiuta solo l'IDE, ma non ha alcun impatto su altre cose.
Esistono diverse PR unite che sono "micro-ottimizzazioni" come il casting (int)
invece di intval()
o ottenere dimensioni di array all'esterno di loop (anche per array di piccole dimensioni).
D'altra parte ci sono
getter magici, che hanno un po 'di "sovraccarico" come descritto da Marius ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
i mehtod devono anche 2-3 ulteriori controlli ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Per il proprio codice è assolutamente d'accordo di preferire metodi reali, ma negli stessi casi non è possibile ... ad esempio, hai creato un evento personalizzato ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Usando 3rd with /** @var some $value */
mi sembra meglio. (?)