デメテルの法則違反を回避する方法(「新規オブジェクトは、注入可能なオブジェクトへのフィールド参照を保持してはなりません」)
依存性注入を使用するためのルールで、Magento 2 devdocsは次のように述べています。 Newableオブジェクトは、注入可能なオブジェクトへのフィールド参照を保持したり、コンストラクターでフィールド参照を要求したりしてはなりません。これはデメテルの法則違反です。 これは良い目標だと私は理解していますが、Magento 2モデルでこれを実際にどのように実現できますか? 新しいアーキテクチャの優れた例として示されているCustomerモジュールを見ると、顧客モデルコンストラクターのシグネチャは次のようになります。 public function __construct( \Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Eav\Model\Config $config, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Customer\Model\ResourceModel\Customer $resource, \Magento\Customer\Model\Config\Share $configShare, \Magento\Customer\Model\AddressFactory $addressFactory, \Magento\Customer\Model\ResourceModel\Address\CollectionFactory $addressesFactory, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder, GroupRepositoryInterface $groupRepository, \Magento\Framework\Encryption\EncryptorInterface $encryptor, \Magento\Framework\Stdlib\DateTime $dateTime, CustomerInterfaceFactory $customerDataFactory, DataObjectProcessor $dataObjectProcessor, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, \Magento\Customer\Api\CustomerMetadataInterface $metadataService, \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, …