Być może brakuje mi punktu, ale po prostu zastanawiam się, dlaczego czasami istnieje instrukcja „use” dla określonej klasy, a czasem nie.
Przykład: app\code\Magento\Email\Model\Template.php
mamy na górze pliku:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Następnie w __construct
metodzie mamy następujące parametry:
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 = []
)
Widzimy więc wyraźnie, że jak nazywamy use Magento\Store\Model\StoreManagerInterface;
na szczycie klasy, jesteśmy w stanie wykonać StoreManagerInterface $storeManager
parametry konstruktora.
Moje pytania to:
- Dlaczego robimy to tylko dla jednej klasy?
- Dlaczego nie możemy dodać
use
instrukcji dla każdej klasy konstruktora, abyśmy nie musieli wpisywać pełnej ścieżki klasy? - Lub na odwrót, dlaczego nie pozbędziemy się
use
instrukcji i nie podamy pełnej ścieżki doStoreManagerInterface
klasy?
źródło
use
do konkretnej klasy, którą wskazałem, prawda?Wykorzystanie zależy od konkretnej sytuacji. Moje podejście to:
Klasa wspomniana tylko raz w pliku - FQN
Pozostaw w pełni kwalifikowaną nazwę . Poprawia to czytelność, ponieważ nie trzeba ponownie patrzeć na sekcję użycia .
Nazwa klasy używana wielokrotnie - import
Umieść go w sekcji użytkowania . To sprawia, że kod jest krótszy tam, gdzie wspomniana jest klasa.
Klasa używana raz, ale potrzebuję krótkiej notacji - import
Lepiej wyjaśnij na przykładzie.
FQN
import
Moim zdaniem drugi przykład jest łatwiejszy do odczytania. (Szczerze mówiąc wolałbym tutaj używać zmiennych zamiast stałych, aby zapewnić jeszcze większą czytelność).
Interfejsy API Magento 2
Zawiadomienie dotyczy punktów końcowych interfejsu API z automatyczną ekspozycją M2. W interfejsach używanych w metodach REST / SOAP należy zawsze używać nazw FQN.
źródło