Os getters mágicos em Varien_Object
(M1) e DataObject
(M2) são práticas comuns, mas com o Magento 2 parece errado usá-lo.
Boa:
- fácil de ler / escrever
Ruim
- Causa problemas ao usar dígitos nas chaves (consulte: Magento 2: maneira diferente de obter o campo de uma coleção ou o atributo Obter produto personalizado usando a caixa camel )
- ferramentas de análise de código reclamam de métodos inexistentes
Questão
Com o Magento 2, temos dois novos métodos:
getDataByKey($key)
getDataByPath($path)
Existe alguma boa razão para continuar usando getData($key)
ou algum método mágico?
Editar:
@Vinai thanks. Não mencionei o @method
método, porque minha abordagem era bem diferente.
Isso apenas ajuda o IDE, mas não tem impacto em outras coisas.
Existem vários PRs mesclados que são "micro-otimizações", como converter para em (int)
vez de intval()
ou obter o tamanho da matriz fora de loops (mesmo para pequenas matrizes).
Por outro lado, existem
getters mágicos, que têm algumas "despesas gerais", como Marius descreveu ....
strtolower(trim(preg_replace('/([A-Z]|[0-9]+)/', "_$1", $name), '_'));
getData($key)
os mehtods também precisam de 2-3 verificações adicionais ...if ('' === $key) {
if (strpos($key, '/')) {
if ($index !== null) {
Para o próprio código, concordo totalmente em preferir métodos reais, mas nos mesmos casos não é possível ... por exemplo, você criou um evento personalizado ...
$value = $observer->getVar_1();
$value = $observer->getData('var_1');
$value = $observer->getDataByKey('var_1');
Usar o terceiro com /** @var some $value */
parece melhor para mim. (?)