Меню
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON PHP КАК
     ❯   

PHP Учебник


PHP Формы


PHP Продвинутый


PHP ООП


MySQL База данных


PHP XML


PHP - AJAX


PHP Примеры


PHP Справочник



PHP - Пространства имен



Пространства имен в PHP

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

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


Зачем использовать пространства имен?

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

Предположим, у вас есть набор классов, описывающих HTML-таблицу: Table, Row и Cell. Кроме того, у вас есть другой набор классов, описывающих мебель: Table, Chair и Bed. Здесь пространства имен могут использоваться для организации этих классов в две разные группы, что предотвращает смешивание двух классов Table.


Объявление пространства имен

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

Здесь мы объявляем пространство имен с именем Html:

<?php
namespace Html;
?>

Примечание: Объявление пространства имен должно быть самой первой вещью в PHP-файле! Следующий код недействителен:

<?php
echo "Привет мир!";
namespace Html;
...
?>

Все классы, интерфейсы, функции и константы, объявленные в этом PHP-файле, теперь будут принадлежать пространству имен Html:

Пример

Создайте класс Table в пространстве имен Html:

<?php
namespace Html;
class Table {
  public $title = "";
  public $rows = 0;
  public function info() {
    echo "<p>$this->title содержит $this->rows строк(и).</p>";
  }
}

$table = new \Html\Table();
$table->title = "Моя таблица";
$table->rows = 5;
?>

<!DOCTYPE html>
<html>
<body>

<?php
$table->info();
?>

</body>
</html>
Попробуйте сами »

Для дальнейшей организации можно использовать вложенные пространства имен:

Синтаксис

Объявите пространство имен с именем Html внутри пространства имен с именем Code:

<?php
namespace Code\Html;
?>


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

Любой код, следующий за объявлением пространства имен, работает внутри этого пространства имен, поэтому классы, принадлежащие пространству имен, могут быть созданы без каких-либо квалификаторов. Для доступа к классам извне пространства имен к классу должно быть присоединено пространство имен.

Пример

Используйте классы из пространства имен Html:

<?php
$table = new Html\Table();
$row = new Html\Row();
?>
Попробуйте сами »

Когда одновременно используется много классов из одного пространства имен, проще использовать ключевое слово namespace:

Пример

Используйте классы из пространства имен Html без необходимости в квалификаторе Html\:

<?php
namespace Html;
$table = new Table();
$row = new Row();
?>
Попробуйте сами »

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

Может быть полезно дать пространству имен или классу псевдоним, чтобы упростить написание кода. Это делается с помощью ключевого слова use:

Пример

Дайте пространству имен псевдоним:

<?php
use Html as H;
$table = new H\Table();
?>
Попробуйте сами »

Пример

Дайте классу псевдоним:

<?php
use Html\Table as T;
$table = new T();
?>
Попробуйте сами »


×

Связаться с отделом продаж

Если вы хотите использовать услуги schoolsw3 как образовательное учреждение, команда или предприятие, отправьте нам электронное письмо:
sales@schoolsw3.com

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, отправьте нам электронное письмо:
help@schoolsw3.com

Schoolsw3 оптимизирован для обучения и подготовки. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно проверяются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего контента.
При использовании Schoolsw3 вы соглашаетесь прочитать и принять наши условия использования,
политику использования файлов cookie и конфиденциальности.

Авторское право 1999- © Copyright. Все права защищены. Schoolsw3 работает на SW3.CSS.