現時点では、モジュール内で次のような類似のコンストラクターをまとめて作成することにイライラしています。
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 */
}
多くの場合、多くの場合、モジュール全体で同じクラスのインスタンスが必要です。
したがって、必要なクラスを提供する1つまたは2つの中心的なヘルパークラスをすべてのコンストラクターで定義するのではなく、使用するのが許容できる方法であるかどうか、私は疑問に思っていました。
これは、次のようなパターンを意味します。
ヘルパークラス
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;
}
}
短いコンストラクター
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 */
}
現時点では、この構造によって引き起こされる大きな欠点に対処する必要があるかどうかはわかりません。これはDI定義の量を減らすための許容できる方法でしょうか?