En la mayoría de los constructores de la clase, se pasa un objeto de contexto. No podía entender cómo funciona este Contexto Obj. También noté que a veces esto se pasa al constructor de la clase principal como a continuación.
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Catalog\Model\Design $catalogDesign,
\Magento\Catalog\Model\Session $catalogSession,
....
parent::__construct(
$context,
$layoutFactory,
¿Puede explicar cómo funciona este objeto de contexto específico?
fuente
$context
?Los objetos de contexto se introdujeron para aislar a los desarrolladores externos de los cambios en los constructores de clases abstractas.
En Magento 1, las clases abstractas con mucho comportamiento "auxiliar" se consideraban una API conveniente para el extensor de clase. Esto causó un gran número de métodos y dependencias implícitas en las clases abstractas (
AbstractModel
,AbstractBlock
,AbstractAction
)En Magento 2, se desaconsejan las API basadas en herencia (más precisamente SPI), pero todavía existen muchas API heredadas. Inicialmente planeamos eliminar gradualmente el comportamiento extra de las clases abstractas. Y para no romper todos los extensores cuando eliminaríamos alguna dependencia del constructor, introdujimos objetos de contexto.
El plan actual es abandonar las API basadas en herencia con las API basadas en interfaz en algún momento.
fuente