Magento2 - Qual é o propósito de uma interface de dados?
Não consigo encontrar uma definição ou compreensão sólida do propósito ou função de um data interfaceem Magento2 APIArquitetura.
Por favor me ajude.
Desde já, obrigado.
Respostas
Interfaces de dados
As interfaces de dados são usadas para manter a integridade dos dados, as interfaces de dados definem todos os setters e getters para a entidade relacionada. Portanto, mesmo que haja alguma mudança no modelo ou na lógica de negócios, você sempre obterá dados consistentes. As interfaces de dados residem em VendorName \ ModuleName \ Api \ Data, portanto, em todos os módulos você pode encontrar interfaces de dados em pastas Api / Data, o modelo relacionado precisa implementar essas interfaces e fornecer a definição de setters e getters.
Interfaces
As interfaces de repositório fornecem acesso a entidades de dados persistentes. interfaces têm os seguintes métodos:
save(data entity interface): Cria um novo registro se nenhum id presente, caso contrário, atualiza um registro existente com o id especificado.
get(id): Executa uma pesquisa de banco de dados por id e retorna uma interface de entidade de dados (como CustomerInterface ou AddressInterface).
getList(search criteria): Executa uma pesquisa por todas as entidades de dados que correspondem aos critérios de pesquisa e retorna uma interface de resultados da pesquisa para dar acesso ao conjunto de correspondências.
delete(data entity interface): Exclui a entidade especificada (a chave está na entidade).
deleteById(id): Exclui a entidade especificada quando você só tem a chave para a entidade.
- O módulo de terceiros deve operar com as classes / interfaces do seu módulo marcadas como
@api, não necessariamente interfaces de contrato de serviço, mas preferencialmente. Se a interface é solicitada nas dependências, o gerenciador de objetos Magento resolve o modelo real a ser instanciado de acordo com as preferências declaradas emdi.xml(uma vez que a própria interface não pode ser instanciada). - Recomenda-se declarar interfaces de contrato de serviço, leia sobre os benefícios aqui e nos documentos oficiais.
- É respondido acima (modelo implementa interface). Você deve sempre usar
interfacesse disponível, mesmo se aqueles estiverem definidos em seu módulo. Isso permite gerenciar a complexidade, limitando o número de dependências entre classes / módulos.