Los captadores de magia en Varien_Object
(M1) y DataObject
(M2) son una práctica común, pero con Magento 2 se siente mal usarlo.
Bueno:
- fácil de leer / escribir
Malo
- Causa problemas al usar dígitos en las claves (vea: Magento 2: forma diferente de obtener el campo de una colección u obtener el atributo Obtener producto personalizado usando el caso de camello )
- las herramientas de análisis de código se quejan de métodos no existentes
Pregunta
Con Magento 2 tenemos dos nuevos métodos:
getDataByKey($key)
getDataByPath($path)
¿Hay alguna buena razón para seguir usando getData($key)
o algún objeto mágico?
Editar:
@Vinai gracias. No mencioné el @method
método, porque mi enfoque era bastante diferente.
Solo ayuda al IDE, pero no tiene impacto en otras cosas.
Existen varios PR combinados que son "microoptimizaciones" como la conversión en (int)
lugar de intval()
u obtener el tamaño de la matriz fuera de los bucles (incluso para matrices pequeñas).
Por otro lado hay
captadores mágicos, que tienen algo de "sobrecarga" como describió Marius ...
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
Mehtods también tienen que hacer 2-3 controles adicionales ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Para el propio código, estoy totalmente de acuerdo en preferir métodos reales, pero en los mismos casos no es posible ... por ejemplo, ha creado un evento personalizado ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Usar 3rd con me /** @var some $value */
parece mejor. (?)