Эта статья иллюстрирует основное использование пространств имен в расширенном обучении PHP. Поделитесь для вашей справки следующим образом:
Предисловие
Пространство имен в языках программирования-это особая абстракция области видимости. Он представляет видимую область идентификатора. Идентификатор может быть определен в нескольких пространствах имен, и его значение в разных пространствах имен не имеет значения. Таким образом, любые идентификаторы могут быть определены в новом пространстве имен, и они не конфликтуют ни с какими существующими идентификаторами, поскольку существующие определения находятся в других пространствах имен.
Пространства имен также используются в PHP, где идентификатор, управляющий видимостью, обычно относится к классам и функциям.
I. Основание пространства имен PHP
В широком смысле пространства имен-это способ инкапсуляции вещей. Это абстрактное понятие можно увидеть во многих местах. Например, имена классов PHP не повторяются, но часто мы это делаем. Необходимо ввести некоторые сторонние библиотеки классов, и часто имена классов вызывают повторяющиеся конфликты в проектах. Пространства имен, таким образом, являются способом разрешения этого конфликта.
Начиная с PHP 5.3, было введено понятие пространства имен, то есть пространства имен. Имена классов в одном и том же пространстве имен не могут повторяться, и классы с одинаковыми именами могут существовать в разных пространствах имен.
Таким образом, при внедрении сторонних библиотек классов конфликты не возникнут, если только пространства имен каждой библиотеки классов не будут отличаться.
Таким образом, согласно официальному заявлению, в PHP пространства имен используются для решения двух видов проблем при создании повторно используемого кода, такого как классы или функции, при написании библиотек классов или приложений:
1. Конфликты имен между написанным пользователем кодом и классами/функциями/константами в PHP или сторонними классами/функциями/константами. 2. Создайте псевдоним (или короткое) имя для длинного имени идентификатора (обычно определяемого для устранения проблемы первого типа), чтобы улучшить читаемость исходного кода.
Следует отметить, что:
- В одном файле может быть несколько пространств имен.
- Классы в разных пространствах имен могут вызывать друг друга.
Использование пространств имен PHP
1. Определение
Пространства имен определяются пространством имен ключевых слов следующим образом:
namespace example
Классы в пространстве имен принадлежат пространству имен, и классы в примере пространства имен не могут быть переименованы.
Или вы можете определить многоуровневое пространство имен:
namespace example\test\demo
Тогда все классы в пространстве имен относятся пример\тест\демонстрация Пространства имен.
Определенное пространство имен можно использовать __ПРОСТРАНСТВО ИМЕН__
Магические переменные для получения текущего пространства имен.
2. Введение
Введение пространств имен для использования ключевых слов использование
Через несколько использование
Введение нескольких пространств имен в файл:
use example; use example\test\demo;
Классы и методы, в которых необходимо использовать пространства имен, используются при условии, что включены фактические адреса файлов этих пространств имен или может быть достигнута автоматическая загрузка классов.
3. Пример
Создание экземпляра и использование метода класса в пространстве имен в программе также использует ключевое слово new для создания экземпляра, но перед именем класса необходим префикс пространства имен.
Например:
Class = new example a (); // instantiate class A in the example namespace Class = new example test demo B (); class // instantiate class B under example test demo namespace
Если эти пространства имен были введены до файла, префикс класса может не потребоваться:
use example; use example\test\demo; Class = new a (); // instantiate class A in the example namespace Class = New B (); // instantiate class B under example test demo namespace
Примечание: Если используется используйте пример\тест;
При создании экземпляра класса b укажите относительный путь к пространству имен (обратите внимание, что это не фактический путь к файлу), то есть новая демонстрация\b();
Конечно, все экземпляры могут напрямую использовать форму абсолютного пути, то есть добавлять символы перед пространством имен, такие как new \example\test\demo\b();
Таким образом, класс B создается в виде абсолютного пути.
4. Псевдонимы
При определении пространства имен с помощью пространства имен, чтобы избежать слишком длинного пространства имен при последующих ссылках, вы можете использовать ключевое слово как для указания псевдонима пространства имен при его определении.
namespace example\test\demo as testDemo;
Это позволяет использовать более позднюю ссылку или создание экземпляра Новая демонстрация теста\Имя класса>();
3. Спецификация пространства имен на основе PSR4
Из-за несоответствия в определении пространств имен для методов и классов в разных проектах и несоответствия в определении пространств имен для сторонних библиотек классов соответствующие организации PHP выпустили набор обычных спецификаций, а именно спецификации PSR4.
Правила, используемые для стандартизации определения пространств имен.
Конкретные технические характеристики заключаются в следующем:
1. Полное имя класса должно иметь следующую структуру:
\ Пространства имен >(Пространства имен>)*Имена классов > 1. Полное имя класса должно иметь пространство имен верхнего уровня, называемое “пространство имен поставщика”; 2. Полные имена классов могут иметь одно или несколько пространств имен; 3. Полное имя класса должно иметь окончательное имя класса; 4. Скользящая строка в любой части полного имени класса не имеет особого значения. 5. Полные имена классов могут состоять из любых прописных и строчных букв; 6. Все имена классов должны быть чувствительны к регистру.
2. При загрузке соответствующего файла в соответствии с полным именем класса
(1) В полном имени класса первый разделитель пространства имен, одно или несколько последовательных пространств имен и подпространств перед ним в качестве “префикса пространства имен”, должны соответствовать по крайней мере одному “каталогу базы файлов”; (2) Подпространства сразу после префикса пространства имен должны соответствовать соответствующему каталогу базы файлов, где разделитель пространства имен будет выступать в качестве разделителя каталогов. (3) Имя класса в конце должно совпадать с именем соответствующего файла с суффиксом. php . (4) Реализация автозагрузчика не должна вызывать исключение, не должна вызывать информацию об ошибках любого уровня и не должна иметь возвращаемого значения.
Основной смысл спецификации заключается в том, что путь к пространству имен соответствует пути к текущему файлу, что стандартизирует критерии определения для всех пространств имен проекта, хотя PHP официально не имеет такового.
Обязательный, но сейчас многие проекты с открытым исходным кодом традиционно используются, что позволяет легко найти путь к классу в пространстве имен.
Например, если есть d.php в каталоге файлов a/b/c, затем, когда файл в каталоге a представляет класс d, следует использовать b/c или использовать/a/b/c; (форма абсолютного пути)
IV. Пункты Внимания
1. Признак класса повторного использования кода также соответствует спецификации пространства имен, то есть класс признака не может быть переименован в пространстве имен. 2. Хотя PSR4 указывает, что пути к пространствам имен соответствуют путям к файлам, пути к пространствам имен не имеют ничего общего с путями к файлам при запуске PHP Например, в файле класса d | b| c пространство имен может быть записано как a1/b1/c1/d; однако многие платформы с открытым исходным кодом теперь стандартизируют эти два при реализации автоматической загрузки классов, в противном случае файлы классов будут загружены, но пространство имен не может быть загружено. 3. В пространстве имен всем определенным именам, которые не преобразуются в соответствии с правилами импорта, предшествует текущее имя пространства имен. Например, если C D e () вызывается в пространстве имен A B, C D e () преобразуется в A B C D e (). 4、 В пространстве имен (например, AB) вызовы функций с неполными именами разрешаются во время выполнения 。 Например, вызов функции foo () разрешается следующим образом: (1) Найти
Выше приводится адрес документа PSR 4: http://www.php-fig.org/psr/psr-4/
Больше читателей, интересующихся контентом, связанным с PHP, могут ознакомиться с темами этого сайта: Введение в объектно-ориентированное программирование Php, Введение в базовую грамматику PHP, Краткое описание работы и использования операторов PHP, Краткое описание навыков сетевого программирования PHP, Полный набор навыков работы с массивами PHP и Строка Php. Краткое описание использования, вводный курс по работе с базой данных PHP + MySQL и общие навыки работы с базой данных PHP
Я надеюсь, что эта статья будет полезна для разработки PHP – программ для всех.