Als «dependency-injection» getaggte Fragen

Bezeichnet Fragen zur Magento 2-Abhängigkeitsinjektion


1
Falsche Abhängigkeit ScopeConfigInterface existiert bereits im Kontextobjekt bei der Kompilierung von magento2
<?php /** * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Ortho\Featuredproduct\Helper; use Magento\Framework\App\Helper\AbstractHelper; /** * Search helper */ class Data extends AbstractHelper { /** * @var \Magento\Framework\App\Config\ScopeConfigInterfac */ protected $_scopeConfig; protected $_config; protected $_storeManager; protected $_productFactory; CONST FEATURED_ENABLE = 'featured_settings/general/isenable'; CONST FEATURED_TITLE …

2
Verärgert über Tonnen von Klassen für DI in Konstrukteuren von Magento 2 - gibt es einen besseren Weg?
Zu diesem Zeitpunkt ärgere ich mich darüber, in meinen Modulen massenhaft ähnliche Konstruktoren wie die folgenden zu schreiben. 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; …

2
Wie erhalte ich ScopeConfigInterface über den Objektmanager von Komponententests in Magento 2?
Ich versuche, eine Zeile in meinem Komponententest aus core_config_table in der Magento 2-Datenbank zu lesen. Ich weiß das, um diesen Job zu erledigen, da ich diesen Link gelesen habe . Ich muss benutzen: \Magento\Framework\App\Config\ScopeConfigInterface durch: \Magento\Framework\TestFramework\Unit\Helper\ObjectManager Hier ist mein Code: protected function setUp() { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->scopeConfig = …

1
Scheinabhängigkeiten in Magento 2-Integrationstests
Angenommen, das folgende Szenario: Ich habe eine Klasse, die einen externen Dienst anruft Die Klasse implementiert eine Schnittstelle und ist als bevorzugte Implementierung für diese Schnittstelle in definiert di.xml Ein Block empfängt diese Schnittstelle als Konstruktorparameter Ich möchte eine Magento-Anfrage in einem Integrationstest testen, der diesen Block verwendet Ich möchte …

2
Magento2 Circular Depedency beim Lesen der Konfiguration
Ich kann ScopeConfigInterface $scopeConfigbestimmte Objekte nicht erweitern di.xml <preference for="Magento\Framework\Logger\Monolog" type="Foo\Log\Logger\FooLog" /> <virtualType name="helper" type="Foo\Log\Helper\Data" /> <type name="Foo\Log\Logger\FooLog"> <arguments> <argument name="helper" xsi:type="object">Foo\Log\Helper\Data</argument> </arguments> </type> FooLog.php public function __construct( \Foo\Log\Helper\Data $dataHelper ) { $this->_scopeConfig = $scopeConfig; } Data.php public function __construct(ScopeConfigInterface $scopeConfig) { $this->_scopeConfig = $scopeConfig; } $this->_scopeConfig->getValue('dev/debug/foo_bar_config', 'default'); Error: Circular …

1
Magento 2: Wie werden Sendungsverfolgungsdaten gespeichert?
Ich versuche herauszufinden, wie Sendungsverfolgungsdaten gespeichert werden. Besonders wenn es von der API festgelegt wird. Wenn ich mir das anschaue, sales/etc/webapi.xmlsehe ich Folgendes. <route url="/V1/shipment/track" method="POST"> <service class="Magento\Sales\Api\ShipmentTrackRepositoryInterface" method="save"/> <resources> <resource ref="Magento_Sales::sales" /> </resources> </route> Dies führt mich dorthin, sales/etc/di.xmlwo ich Folgendes sehe: <preference for="Magento\Sales\Api\ShipmentTrackRepositoryInterface" type="Magento\Sales\Api\Data\ShipmentTrack\Repository"/> Hier beginnt meine Frage. …

2
So vermeiden Sie Verstöße gegen das Demeter-Gesetz („Neue Objekte sollten keinen Feldverweis auf ein injizierbares Objekt enthalten“)
In den Regeln für die Verwendung der Abhängigkeitsinjektion geben die Magento 2-Devdocs Folgendes an: Newable-Objekte sollten weder einen Feldverweis auf ein injizierbares Objekt enthalten noch einen in ihrem Konstruktor anfordern. Dies ist ein Verstoß gegen das Gesetz von Demeter . Ich verstehe, dass dies ein gutes Ziel ist, aber wie …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.