Eu posso estar perdendo um ponto, mas estou me perguntando por que às vezes há uma instrução "use" para uma classe específica e às vezes não.
Exemplo app\code\Magento\Email\Model\Template.php
:, temos no topo do arquivo:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Então, no __construct
método, temos os seguintes parâmetros:
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 = []
)
Portanto, podemos ver claramente que, como chamamos use Magento\Store\Model\StoreManagerInterface;
no topo da classe, somos capazes de fazê-lo StoreManagerInterface $storeManager
nos parâmetros do construtor.
Minhas perguntas são:
- Por que fazemos isso para apenas uma classe?
- Por que não podemos adicionar uma
use
declaração para todas as classes do construtor para não precisarmos digitar o caminho completo da classe? - Ou o contrário, por que não nos livramos da
use
instrução e digitamos o caminho completo para aStoreManagerInterface
aula?
fonte
use
para a classe específica que apontei, certo?O uso depende da situação específica. Minha abordagem é:
Classe mencionada apenas uma vez dentro de um arquivo - FQN
Deixe o nome completo . Isso melhora a legibilidade, porque você não precisa procurar o uso seção de novamente.
Nome da classe usado várias vezes - importação
Coloque-o em uma seção de uso . Isso reduz o código onde a classe é mencionada.
Classe usada uma vez, mas preciso de uma notação curta - import
Melhor explicar com um exemplo.
FQN
importar
Na minha opinião, o segundo exemplo é mais fácil de ler. (Mas, honestamente, eu preferiria usar variáveis em vez de constantes aqui para dar ainda mais legibilidade.)
Interfaces de API do Magento 2
Há um aviso sobre os pontos finais da API M2 expostos automaticamente. Nas interfaces usadas para métodos REST / SOAP, você sempre deve usar FQNs.
fonte