Devo utilizar ObjectManager diretamente em meus módulos? Quais são os pontos negativos na sua utilização? Por que mesmo dentro do Core do Magento existe a sua utilização e por que existe essa opção no Magento?
Vários programadores se encontram com essa dúvida ao se deparar com o ObjectManager.
<?php
//Get Object Manager Instance
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
//Load product by product id
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($id);
Em vez de passar pelo doloroso mas recomendado processo de:
Você pode utilizar simplesmente o código acima e já ter acesso aos dados de um determinado produto.
Existem várias razões. O código funcionará, mas é uma prática recomendada não fazer referência à classe ObjectManager diretamente por que:
O principal motivo pelo qual os desenvolvedores são fortemente desencorajados a usar o Gerenciador de Objetos diretamente é que o uso direto do Gerenciador de Objetos faz com que a extensão não seja instalável no modo de produção compilado.
Portanto, ele quebra para seus clientes usando o modo de produção, incluindo todos os clientes no Magento Cloud.
Parece que uma proporção razoavelmente grande de desenvolvedores (aproximadamente 75%) não testa suas extensões para ver se podem ser instaladas no modo de produção, portanto, não se depare com os problemas apresentados pelo uso incorreto do ObjectManager.
A partir de 2017, o Magento Marketplace executa um teste de compilação e instalação em todas as extensões vendidas por meio dele. Se sua extensão usar o Gerenciador de objetos diretamente, ela falhará nesses testes e será rejeitada no Marketplace até que você resolva o problema e faça o upload novamente.
Nem sempre será necessário criar um módulo no Magento 2 que está disponível no Marketplace, em Scripts “StandAlone”, muito utilizados nas intervenções em ambiente de produção, sua utilização não é condenável, já que a própria pratica da criação do Script não é aconselhada e é um código de uso pontual.
Temos também que considerarmos as lojas que são extremamente customizadas que não sofrerão atualizações no futuro, contudo esse segundo ponto não tira o peso de um dos pontos negativos sobre a utilização do ObjectManager, que é a padronização do código e a sua qualidade.
Segurança: Atualizações frequentes geralmente incluem patches de segurança para corrigir vulnerabilidades identificadas. Ao manter o Magento atualizado, você reduz significativamente…
Como adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2 Injete o Magento\Framework\Message\ManagerInterface no construtor da sua…
Para exibir as mensagens adicionadas na classe Magento\Framework\Message\ManagerInterface em um arquivo .phtml, você pode usar o seguinte código: <?php $objectManager…
Para criar um script no Magento 2 que exporte as categorias para um arquivo XML com o nome da categoria,…
Para definir um vídeo MP4 como plano de fundo em um <div> usando HTML e CSS, você pode seguir estas…
Como desativar o "lastname" no Magento 2 e Adobe Commerce Desativando a obrigatoriedade do campo Execute a SQL abaixo diretamente…