Anotações Magento 2: Injeção de Dependência

A injeção de dependência é uma forma de obter objetos.

Neste processo, classes recebem os objetos a qual elas dependem como argumentos de construtores.

Você define sua classe com o construtor recebendo os argumentos de objetos que precisa.

O Sistema de Injeção de Dependência, basicamente o gerenciador de objetos, criará para você.

Tudo isto é baseado em configuração

No Magento 2 o gerenciador de objetos é responsável por criar todos os objetos requeridos por uma classe.

Todas as dependências de um objetos são passadas (injetadas) no objeto, ao invés de serem “puxadas” pelo objeto.

A injeção de dependência é uma configuração baseada em XML e validada por um XSD.

A injeção de construtor deve ser usada para todos as dependências de objetos opcionais ou obrigatórias.

Defina a preferência e irá funciona globalmente

Defina a classe no di.xml para o objeto em particular (Produto) e a preferência não será global, mas apenas será aplicada para Produto.

A Injeção de método deve ser utilizada para parâmetros da API.

Todas as classes relacionadas ao gerenciador de objeto estão em Magento\Framweork

Gerenciador de Objetos

O gerenciador de objetos é responsável por criar objeto, implementar padrões singleton, gerenciar dependências, instanciar parâmetros automaticamente.

O gerenciador de objetos define parametros e argumentos.

A classe gerenciador de objetos possui dois métodos: Get e Create. O Método Get irá retornar um objeto singleton (chamado de Classe Compatilhada). O método create irá criar uma nova instância da classe.

O gerenciador de objetos requer a seguinte configuração no di.xml:

* Classe
* Configurações da Instância
* Mapeamento Abstração-Implementação

Magento 2 oferece uma nova abordagem para trabalhar com objeto. Não apenas encoraja o uso do gerenciador de objetos, mas também criar um objeto para você.

A criação de objetos é um processo tão importante que o Magento 2 cuida automaticamente através do gerenciador de objetos e dependências de classes declaradas como parâmetros de construtores.

Agora você precisa utilizar o nome real da classe, incluindo o PHP namespace, quando você requer a instância de uma classe.

Um objeto compartilhado é análogo a um singleton. Você pode encontrar situações em que você quer utilizar a mesma instância de uma classe com diversas outras classes.

Magento sempre utiliza apenas uma configuração di.xml durante qualquer requisição

Inclui o resultado da mescla de app/etc/di.xml, o etc/di.xml de cada módulo, e o di.xml de áreas específicas de cada módulo em que a área é a mesma da área solicitada por exemplo, frontend ou adminhtml.

Objetos carregados via ORM não são injetáveis.

Objetos de sistema como singletons (instâncias compartilhadas) são injetáveis.

Para um objeto injetável produzir um objeto não-injetável, é necessário a Factory do não injetável em seu construtor.

Para um objeto injetável realizar ações de um objeto não injetável, deve receber os objetos não-injetáveis como argumentos do método.

Magento utiliza assinaturas de construtores de classes para obter informações sobre dependência de classes, e define qual dependência passar para um objeto.

Magento utiliza assinaturas de construtores de classe para obter informações sobre dependência de classes.

Desta forma o desenvolvedor não precisa se preocupar sobre definições de classses se for utilizado código usando os princípios DI.

2017-01-24T20:23:11+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x