Je manque peut-être un point, mais je me demande simplement pourquoi il existe parfois une instruction "use" pour une classe spécifique et parfois nous ne le faisons pas.
Exemple:, app\code\Magento\Email\Model\Template.php
nous avons en haut du fichier:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Ensuite, dans la __construct
méthode, nous avons les paramètres suivants:
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 = []
)
Nous pouvons donc clairement voir que, comme nous l'avons appelé use Magento\Store\Model\StoreManagerInterface;
en haut de la classe, nous pouvons le faire StoreManagerInterface $storeManager
dans les paramètres du constructeur.
Mes questions sont:
- Pourquoi faisons-nous cela pour une seule classe?
- Pourquoi ne pouvons-nous pas ajouter une
use
instruction pour chaque classe du constructeur afin que nous n'ayons pas à taper le chemin complet de la classe? - Ou l'inverse, pourquoi ne pas nous débarrasser de l'
use
instruction et taper le chemin complet vers laStoreManagerInterface
classe?
la source
use
pour la classe spécifique que j'ai indiquée, n'est-ce pas?L'utilisation dépend de la situation spécifique. Mon approche est:
Classe mentionnée une seule fois dans un fichier - FQN
Laissez un nom complet . Cela améliore la lisibilité car vous n'avez pas besoin de consulter à nouveau la section utilisation .
Nom de classe utilisé plusieurs fois - importation
Mettez-le dans une section d' utilisation . Cela rend le code plus court lorsque la classe est mentionnée.
Classe utilisée une fois mais j'ai besoin d'une notation courte - import
Mieux vaut expliquer avec un exemple.
FQN
importation
À mon avis, le 2e exemple est plus facile à lire. (Mais honnêtement, je préfère utiliser des variables plutôt que des constantes ici pour lui donner encore plus de lisibilité.)
Interfaces API Magento 2
Il existe un avis concernant les points de terminaison d'API auto-exposés M2. Dans les interfaces utilisées pour les méthodes REST / SOAP, vous devez toujours utiliser des FQN.
la source