В чем разница между пространством имен и использованием, я не могу понять, я думал, что использование с «AS» для создания ярлыка для пространства имен
я думал, что для использования без пространства имен вы должны включить / потребовать что-то, но этот пример на скриншоте меня просто смущает
Снимок экрана с 7:11 https://www.youtube.com/watch?v=sLFNVXY0APk
В 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
, Общее «практическое правило» заключается в том, что пространство имен должно соответствовать структуре каталогов, чтобы мы могли использовать автопогрузчики, а не включать каждый файл в начале. Автозагрузчики загружают файл класса только тогда, когда это необходимо, и, как я уже сказал, это основано на правильном присвоении имен и пространств имен классу и структуре каталогов.
Я надеюсь, что в этом есть смысл.
Других решений пока нет …