Разница между пространством имен и использованием, особенно в фреймворке php laravel - PullRequest
0 голосов
/ 11 ноября 2018

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

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

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

1 Ответ

0 голосов
/ 11 ноября 2018

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

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...