В 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
. Общее «практическое правило» заключается в том, что пространство имен должно соответствовать структуре каталогов, чтобы мы могли использовать автопогрузчики, а не включать каждый файл в начале. Автозагрузчики загружают файл класса только тогда, когда это необходимо, и, как я уже сказал, это основано на правильном присвоении имен и пространств имен классу и структуре каталогов.
Надеюсь, это имеет смысл.