Saya mungkin kehilangan satu poin tetapi saya hanya bertanya-tanya mengapa kadang-kadang ada pernyataan "gunakan" untuk kelas tertentu dan terkadang kita tidak.
Contoh:, app\code\Magento\Email\Model\Template.php
kami ada di bagian atas file:
namespace Magento\Email\Model;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
Kemudian dalam __construct
metode ini kita memiliki parameter berikut:
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 = []
)
Jadi kita dapat dengan jelas melihat bahwa ketika kita memanggil use Magento\Store\Model\StoreManagerInterface;
bagian atas kelas, kita dapat melakukannya StoreManagerInterface $storeManager
di parameter konstruktor.
Pertanyaan saya adalah:
- Mengapa kita melakukan ini hanya untuk satu kelas?
- Mengapa kita tidak bisa menambahkan
use
pernyataan untuk setiap kelas konstruktor sehingga kita tidak perlu mengetikkan path kelas penuh? - Atau sebaliknya, mengapa kita tidak menyingkirkan
use
pernyataan itu dan mengetikkan path lengkap keStoreManagerInterface
kelas?
sumber
use
untuk kelas spesifik yang saya tunjuk kan?Penggunaannya tergantung pada situasi tertentu. Pendekatan saya adalah:
Kelas yang disebutkan hanya sekali di dalam file - FQN
Tinggalkan nama yang sepenuhnya memenuhi syarat . Ini meningkatkan keterbacaan karena Anda tidak perlu melihat bagian penggunaan lagi.
Nama kelas yang digunakan beberapa kali - impor
Masukkan ke dalam bagian penggunaan . Ini membuat kode lebih pendek di mana kelas disebutkan.
Kelas digunakan sekali tetapi saya perlu notasi pendek - impor
Lebih baik jelaskan dengan contoh.
FQN
impor
Menurut saya contoh ke-2 lebih mudah dibaca. (Tapi jujur saja, saya lebih suka menggunakan variabel daripada konstanta di sini untuk membuatnya lebih mudah dibaca.)
Antarmuka API Magento 2
Ada pemberitahuan tentang titik akhir API M2 yang terpapar otomatis. Dalam antarmuka yang digunakan untuk metode REST / SOAP Anda harus selalu menggunakan FQNs.
sumber