O Magento 2 tem o conceito de Plugins / Interceptação / Interceptores opostos ao Magento 1.
Eles agem como um | antes do evento para todos os métodos públicos. Que é bom.
Você também pode usar o around
plug-in para substituir a funcionalidade de um método.
Mas o Magento 2 ainda oferece a possibilidade de reescrever classes mais ou menos da maneira M1.
Gostaria de ver alguns exemplos em que reescrever classes é o caminho a seguir, em vez de usar plug-ins.
Sei que isso é útil quando você deseja alterar o comportamento de um método protegido por núcleo, mas há outros casos em que uma reescrita é recomendada ou necessária?
17
Respostas:
O motivo óbvio para usar uma reescrita em vez de um plug-in é quando você precisa substituir um método privado, protegido ou final .
Mas também considere os seguintes cenários.
1º cenário (ordem de classificação absoluta):
As regravações podem ser úteis quando você precisar que seu código seja executado antes dos plug-ins . Eu sei que você pode fazer isso configurando o plug-in
sortOrder
, mas não pode ter certeza de que seu código será sempre o primeiro quando alguém (não você) instalará componentes de terceiros.Segundo cenário (excluir código):
Se você precisar excluir ou reescrever apenas um pedaço de código em um método, um plug-in pode ser uma maneira abaixo do ideal. Eu sei que você pode usar um
around
plug - in e evitar chamar oproceed
, mas isso pode quebrar outros plug-ins na pilha.Terceiro cenário (estilo de código):
Você deve reescrever quando precisar reescrever um comportamento; os plug-ins devem ser usados para modificar a saída ou executar o código antes / depois.
Um plug-in deve sempre executar o código original para evitar a quebra de outros módulos.
Minha conclusão:
Se você pode considerar um método principal como uma caixa preta com uma entrada e uma saída e não souber sobre seus mecanismos internos, um plug-in pode ser a melhor opção.
Se você precisar alterar um comportamento interno , uma reescrita pode ser a melhor opção.
fonte
Ótima pergunta, eu me fiz a mesma coisa no outro dia e aqui está o que eu vim com:
Fonte: Curso Fundamental Magento U
fonte