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.php
Wir haben am Anfang der Datei:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Dann __construct
haben 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 $storeManager
in 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
use
fü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
use
Anweisung nicht los und geben den vollständigen Pfad zurStoreManagerInterface
Klasse ein?
quelle
use
für die bestimmte Klasse, auf die ich hingewiesen habe, hinzugefügt wurde, oder?Die Verwendung ist situationsabhängig. Mein Ansatz ist:
Klasse, die nur einmal in einer Datei erwähnt wurde - FQN
Hinterlassen Sie einen vollständig qualifizierten Namen . Dies verbessert die Lesbarkeit, da Sie den Abschnitt use nicht erneut lesen müssen .
Klassenname mehrfach verwendet - Import
Legen Sie es in einen Verwendungsabschnitt . Dadurch wird der Code dort, wo die Klasse erwähnt wird, kürzer.
Klasse einmal verwendet, aber ich brauche eine kurze Notation - Import
Besser mit einem Beispiel erklären.
FQN
importieren
Meiner Meinung nach ist das 2. Beispiel leichter zu lesen. (Aber ehrlich gesagt würde ich lieber Variablen anstelle von Konstanten verwenden, um die Lesbarkeit zu verbessern.)
Magento 2 API-Schnittstellen
Es gibt einen Hinweis zu automatisch freigegebenen M2-API-Endpunkten. In Schnittstellen, die für REST / SOAP-Methoden verwendet werden, sollten Sie immer FQNs verwenden.
quelle