Разница между пространством имен и использованием, особенно в фреймворке php laravel

В чем разница между пространством имен и использованием, я не могу понять, я думал, что использование с «AS» для создания ярлыка для пространства имен

я думал, что для использования без пространства имен вы должны включить / потребовать что-то, но этот пример на скриншоте меня просто смущает

Снимок экрана с 7:11 https://www.youtube.com/watch?v=sLFNVXY0APk

0

Решение

В PHP пространство имен — это контейнер, который инкапсулирует некоторые «вещи»: классы функций, интерфейсы или признаки. Это сделано, чтобы избежать конфликтов имен, потому что в PHP (или большинстве языков) вы можете объявить класс / функцию / интерфейс / признак только один раз и только один раз.

Так, например, вы могли бы иметь класс с именем Users и другой класс под названием MyProject\Users поскольку второе имеет пространство имен, это предотвращает конфликт с первым. В противном случае (без пространства имен) было бы неоднозначно, какой вы хотите, и поэтому PHP выдаст ошибку, если вы попробуете.

Оператор Use позволяет вам использовать пространство имен, не обращаясь к нему целиком. Если вы находитесь в глобальном или базовом пространстве имен, эти 2 вещи примерно эквивалентны

 new \MyProject\Users();

А ТАКЖЕ

use MyProject\Users
new Users();

Большим преимуществом второго является то, что если вы решите изменить пространство имен, вам нужно будет изменить его только в операторе Use, а не при каждом вызове класса в пространстве имен. Кроме того, печатать гораздо меньше, а мы, программисты, не любим печатать, если нам это не нужно.

Теперь, что касается ключевого слова AS, вы можете использовать это для разрешения конфликтов или просто для сокращения пространств имен, например:

 use MyProject as M; //now M = MyProject

new M\Users(); // MyProject user class
new Users(); //base namespace user class

Это действительно не имеет ничего общего с тем, как вы импортируете код в PHP, однако есть некоторые соглашения об именах (например, PSR4), которые имеют дело с правильным размещением файлов в соответствии с их пространством имен. Но это не меняется в зависимости от того, как вы используете Use, Общее «практическое правило» заключается в том, что пространство имен должно соответствовать структуре каталогов, чтобы мы могли использовать автопогрузчики, а не включать каждый файл в начале. Автозагрузчики загружают файл класса только тогда, когда это необходимо, и, как я уже сказал, это основано на правильном присвоении имен и пространств имен классу и структуре каталогов.

Я надеюсь, что в этом есть смысл.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector