Возможно, я упускаю суть, но мне просто интересно, почему иногда есть выражение «использование» для определенного класса, а иногда нет.
Пример: app\code\Magento\Email\Model\Template.php
мы имеем в верхней части файла:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Тогда в __construct
методе у нас есть следующие параметры:
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 = []
)
Таким образом, мы можем ясно видеть, что, как мы вызывали use Magento\Store\Model\StoreManagerInterface;
в верхней части класса, мы можем сделать это StoreManagerInterface $storeManager
в параметрах конструктора.
Мои вопросы:
- Почему мы делаем это только для одного класса?
- Почему мы не можем добавить
use
оператор для каждого класса конструктора, чтобы нам не приходилось вводить полный путь к классу? - Или наоборот, почему бы нам не избавиться от
use
оператора и не ввести полный путь кStoreManagerInterface
классу?
источник
use
для конкретного класса, который я указала правильно?Использование зависит от конкретной ситуации. Мой подход:
Класс, упомянутый только один раз в файле - FQN
Оставьте полностью уточненное имя . Это улучшает читабельность, потому что вам не нужно снова просматривать раздел об использовании .
Имя класса используется несколько раз - импорт
Поместите это в раздел использования . Это делает код короче, где упоминается класс.
Класс используется один раз, но мне нужна короткая запись - импорт
Лучше объясните на примере.
FQN
импорт
На мой взгляд, 2-й пример легче читать. (Но, честно говоря, я бы предпочел использовать переменные вместо констант, чтобы сделать их более читабельными.)
Интерфейсы API Magento 2
Существует уведомление, касающееся автоматически выставляемых конечных точек API M2. В интерфейсах, используемых для методов REST / SOAP, вы всегда должны использовать FQN.
источник