En este momento estoy molesto de escribir constructores similares en masa como los siguientes en mis módulos.
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 */
}
En muchos, muchos casos, necesito instancias de las mismas clases en todo mi módulo.
Entonces me preguntaba si sería una forma aceptable de usar una o dos clases auxiliares centrales, que proporcionan las clases necesarias, en lugar de definirlas en cada constructor.
Esto significa un patrón como este:
Clase auxiliar
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;
}
}
El constructor más corto
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 */
}
En este momento no estoy seguro de si tendré que lidiar con grandes desventajas en el futuro causadas por esta estructura. ¿Sería esta una forma aceptable de reducir la cantidad de definiciones de DI?