Trabalhando com Object Manager

A inicialização de objetos no Magento 2 é feita através do Object Manager. Ele é uma instância da classe Magento\Framework\ObjectManager\ObjectManager que implementa a interface Magento\Framework\ObjectManagerInterface em que encontramos três métodos:

// Cria uma nova instância de objeto.
public function create($type, array $arguments = []);

// Recupera uma instância do objeto em cache.
public function get($type);

// Configura o Object Manager
public function configure(array $configuration);
namespace MyVendor\MyModule\Model

use Magento\Framework\ObjectManagerInterface;

class MyClass
{
    protected $_objectManager;

    public function __construct(
        ObjectManagerInterface $objectManager
    )
    {
        $this->_objectManager = $objectManager;
    }
}

Por ser tão poderoso e importante para o sistema, devemos ter cuidado com o uso dele. É muito comum vermos projetos em que o Object Mananger foi instanciado de maneira direta, conforme abaixo:

//Get Object Manager Instance
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

//Load product by product id
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($id);

Apesar dessa maneira ser funcional, rápida, fácil e curta para se programar, não é uma boa prática a utilização do Object Manager de forma direta.

Sempre que programamos, devemos ter em mente boas práticas, reutilização do código, performance e etc.

Dúvidas? Posta aí!!!

Um abraço.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *