Рубрики
Uncategorized

Принцип и использование пространства имен PHP

Автор оригинала: David Wong.

В этой статье представлен принцип и использование пространства имен PHP. Подробности заключаются в следующем:

Пространство имен для (PHP 5.3.0, PHP 7)

Использование базы пространства имен

Пространство имен PHP похоже на файловую систему,

Существует три способа доступа к файлу в файловой системе

  1. Форма относительного имени файла выглядит следующим образом foo.txt 。 Он будет проанализирован как currentdirectory/foo.txt Где текущий каталог представляет текущий каталог. Таким образом , если текущий каталог /home/для , имя файла разрешается в /home/foo/foo.txt
  2. Относительное имя пути имеет вид subdirectory/foo.txt 。 Он будет проанализирован как currentdirectory/subdirectory/foo.txt
  3. Абсолютный путь представлен в виде /main/foo.txt 。 Он будет проанализирован как /main/foo.txt

Элементы в пространстве имен PHP используют тот же принцип. Например, на имена классов можно ссылаться тремя способами:

  1. Неквалифицированное имя или имя класса без префикса , например $a=new foo(); Или foo::staticmethod (); . Если текущее пространство имен текущее пространство имен , foo будет проанализировано как текущее пространство имен\foo . Если код , использующий foo, является глобальным и не содержится ни в одном пространстве имен, foo разрешается в foo . Предупреждение: если функция или константа в пространстве имен не определена, имя неквалифицированной функции или константы будет быть преобразовано в глобальное имя функции или имя константы.
  2. Полное имя или имя, содержащее префикс , например $подпространство\foo(); Или подпространство\foo::staticmethod (); . Если текущее пространство имен текущее пространство имен , то foo будет проанализировано как текущее пространство имен\подпространство\foo . Если код, использующий foo, является глобальным и не содержится ни в одном пространстве имен, foo будет разрешен в подпространство\foo .
  3. Полное имя , или содержит имя оператора глобального префикса, например $a \текущее пространство имен\foo(); Или \currentnamespace\foo::staticmethod (); . В этом случае foo всегда анализируется как буквальное имя в коде текущее пространство имен\foo .

Определение пространств имен

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

Они являются:

  • Классы (включая абстрактные классы и признаки)
  • Интерфейс
  • функция
  • постоянный

Пространство имен определяется ключевыми словами пространство имен Для объявления. Если файл содержит пространство имен, он должен объявить его перед всем остальным кодом За исключением одного: объявить ключевое слово.


php
Namespace? Myproject; // fatal error - the namespace must be the first statement in the script
?>

Пример объявления одного пространства имен

Определите несколько пространств имен в одном файле

Чтобы определить несколько пространств имен, мы рекомендуем использовать синтаксис фигурных скобок

В реальной практике программирования не рекомендуется определять несколько пространств имен в одном файле. Этот метод в основном используется для объединения нескольких PHP – скриптов в один файл.

Синтаксис в фигурных скобках можно использовать только для объединения кода в глобальном пространстве имен, отличном от пространства имен, с кодом в пространстве имен. Глобальный код должен быть заключен в инструкцию пространства имен без имени и фигурных скобок, например:

Ключевые слова пространства имен и__ ПРОСТРАНСТВО ИМЕН__ константа

константа __ПРОСТРАНСТВО ИМЕН__ Значение-это строка, содержащая имя текущего пространства имен.

Если код не включен ни в одно пространство имен, это пустая строка.


Ключевые слова пространство имен Могут использоваться для явного доступа к элементам в текущем пространстве имен или подпространстве имен. Это эквивалентно оператору self .

Использовать пространство имен: псевдоним/импорт

Разрешение ссылаться на внешние полные имена или импортировать их с помощью псевдонимов является важной особенностью пространства имен. Это немного похоже на создание символических соединений с другими файлами или каталогами в файловой системе, подобной UNIX.

В PHP псевдонимы создаются с помощью операторов используйте Для достижения

Глобальное пространство

Если пространство имен не определено, все классы и функции определяются в глобальном пространстве, как и до того, как PHP ввел понятие пространства имен. Добавление префикса к имени указывает на то, что это имя находится в глобальном пространстве, даже если оно находится в другом пространстве имен.

Использовать пространство имен: Глобальная функция/константа резервного копирования

В пространстве имен, когда PHP встречает неквалифицированное имя класса, функции или константы, он использует различные политики приоритета для разрешения имени.

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

Для функций и констант, если функция или константа не существует в текущем пространстве имен, PHP вместо этого будет использовать функцию или константу в глобальном пространстве.

Официальный документ PHP:

Официальный документ PHP:

Подробнее о содержании, связанном с PHP, заинтересованные читатели могут ознакомиться со специальными разделами этого веб-сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Энциклопедия навыков работы с массивами PHP”, “Вводный учебник по базовой грамматике PHP”, “Краткое описание операций PHP и использования операторов”, “Краткое описание использования строк PHP”, “Вводный учебник по работе с базой данных PHP + MySQL” и “Общая работа с базой данных PHP” Краткое описание навыков написания

Я надеюсь, что эта статья будет полезна для программирования на PHP.