Puede que me esté perdiendo un punto, pero me pregunto por qué a veces hay una declaración de "uso" para una clase específica y otras no.
Ejemplo: app\code\Magento\Email\Model\Template.php
tenemos en la parte superior del archivo:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Luego en el __construct
método tenemos los siguientes 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 = []
)
Entonces, podemos ver claramente que, como lo llamamos use Magento\Store\Model\StoreManagerInterface;
en la parte superior de la clase, podemos hacerlo StoreManagerInterface $storeManager
en los parámetros del constructor.
Mis preguntas son:
- ¿Por qué hacemos esto solo para una clase?
- ¿Por qué no podemos agregar una
use
declaración para cada clase del constructor para no tener que escribir la ruta de clase completa? - O al revés, ¿por qué no nos deshacemos de la
use
declaración y escribimos la ruta completa a laStoreManagerInterface
clase?
use
para la clase específica que señalé, ¿verdad?