En ce moment, je suis ennuyé d'écrire des constructeurs similaires en masse comme les suivants dans mes modules.
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry,
/* ... */
\Foo\Bar\Model\Baz $baz,
/* ... */
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
$this->registry = $registry;
/* ... */
$this->baz = $baz;
/* ... */
/* some awesome stuff */
}
Dans de nombreux cas, j'ai besoin d'instances des mêmes classes partout dans mon module.
Je me demandais donc si ce serait une façon acceptable d'utiliser une ou deux classes d'assistance centrales, qui fournissent les classes nécessaires, au lieu de les définir dans chaque constructeur.
Cela signifie un modèle comme celui-ci:
Classe d'assistance
namespace Foo\Bar\Helper
class Main
{
protected $baz;
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry,
/* ... */
\Foo\Bar\Model\Baz $baz,
/* ... */
) {
$this->registry = $registry;
/* ... */
$this->baz = $baz;
/* ... */
/* some awesome stuff */
}
public function getBazInstance()
{
return $this->baz;
}
}
Le constructeur le plus court
public function __construct(
\Foo\Bar\Helper\Main $mainHelper,
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
$this->mainHelper = $mainHelper;
/* some awesome stuff */
}
À ce stade, je ne sais pas si je devrai faire face à de gros inconvénients à l'avenir causés par cette structure. Serait-ce un moyen acceptable de réduire le nombre de définitions d'ID?