Utilisation de la DI
L'injection de dépendance permet de dire qu'une classe dépend d'une autre. Nous allons utiliser la DI pour charger un produit en dur dans notre block.
Nous allons charger le repository des produits, en prenant toujours l'interface.
Nous aurons donc :
/**
* @var ProductRepositoryInterface
*/
private $productRepository;
public function __construct(
ProductRepositoryInterface $productRepository
Context $context,
array $data = []
) {
$this->productRepository = $productRepository;
parent::__construct($context, $data);
}
Cela nous permettra de l'utiliser en faisant $this->productRepository.
Pour charger un produit nous utiliserons :
$product = $this->productRepository->getById($productId);
Compilation de la DI
Chaque modification liée à la DI - généralement la modification d'un construct - nécessite de compiler la DI via la commande
php bin/magento setup:di:compile
Le mode developer permet néanmoins d'éviter cela, Magento devrait recompiler "à la volée".