Vielleicht fehlt mir ein Punkt, aber ich frage mich nur, warum es manchmal eine "use" -Anweisung für eine bestimmte Klasse gibt und manchmal nicht.
Beispiel: app\code\Magento\Email\Model\Template.phpWir haben am Anfang der Datei:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Dann __constructhaben wir in der Methode die folgenden Parameter:
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Framework\View\DesignInterface $design,
\Magento\Framework\Registry $registry,
\Magento\Store\Model\App\Emulation $appEmulation,
StoreManagerInterface $storeManager,
\Magento\Framework\View\Asset\Repository $assetRepo,
\Magento\Framework\Filesystem $filesystem,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Email\Model\Template\Config $emailConfig,
\Magento\Email\Model\TemplateFactory $templateFactory,
\Magento\Framework\Filter\FilterManager $filterManager,
\Magento\Framework\UrlInterface $urlModel,
\Magento\Email\Model\Template\FilterFactory $filterFactory,
array $data = []
)
Wir können also klar erkennen, dass wir use Magento\Store\Model\StoreManagerInterface;dies StoreManagerInterface $storeManagerin den Konstruktorparametern tun können, als wir oben in der Klasse aufgerufen haben .
Meine Fragen sind:
- Warum machen wir das nur für eine Klasse?
- Warum können wir nicht
usefür jede Klasse des Konstruktors eine Anweisung hinzufügen, sodass wir nicht den vollständigen Klassenpfad eingeben müssen? - Oder umgekehrt, warum werden wir die
useAnweisung nicht los und geben den vollständigen Pfad zurStoreManagerInterfaceKlasse ein?
usefür die bestimmte Klasse, auf die ich hingewiesen habe, hinzugefügt wurde, oder?