Na maioria dos construtores da classe, um objeto Context é passado. Eu não conseguia entender como esse Obj de contexto funciona. Também notei que algumas vezes isso é passado para o construtor da classe pai, como abaixo.
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Catalog\Model\Design $catalogDesign,
\Magento\Catalog\Model\Session $catalogSession,
....
parent::__construct(
$context,
$layoutFactory,
Você pode explicar como esse objeto de contexto específico funciona?
fonte
$context
?Objetos de contexto foram introduzidos para isolar desenvolvedores de terceiros de alterações nos construtores de classes abstratas.
No Magento 1, as classes abstratas com muito comportamento "auxiliar" foram consideradas uma API conveniente para o extensor de classes. Isso causou um grande número de métodos e dependências implícitas em classes abstratas (
AbstractModel
,AbstractBlock
,AbstractAction
)No Magento 2, APIs baseadas em herança (mais precisamente SPIs) são desencorajadas, mas ainda existem muitas APIs herdadas. Inicialmente, planejamos remover gradualmente o comportamento extra das classes abstratas. E para não quebrar todos os extensores quando removeríamos alguma dependência do construtor, introduzimos objetos Context.
O plano atual é abandonar APIs baseadas em herança com APIs baseadas em interface em algum momento.
fonte