PHP Пространства имён
PHP Пространства имён
Пространства имён - это квалификаторы, которые решают две разные проблемы:
- Они позволяют улучшить организацию, группируя классы, которые работают вместе для выполнения задачи
- Они позволяют использовать одно и то же имя для нескольких классов
Например, у вас может быть набор классов, описывающих HTML таблицу, например Table, Row и Cell, а также другой набор классов для описания мебели, например Table, Chair и Bed. Пространства имен можно использовать для организации классов в две разные группы, а также для предотвращения смешивания двух классов Table и Table.
Объявление пространства имен
Пространства имен объявляются в начале файла с помощью ключевого слова namespace
:
Синтаксис
Объявите пространство имен под названием Html:
namespace Html;
Примечание: Объявление namespace
должно быть первым делом в файле PHP. Следующий код будет недействительным:
<?php
echo "Hello World!";
namespace Html;
...
?>
Константы, классы и функции, объявленные в этом файле, будут принадлежать пространству имен Html:
Пример
Создайте класс таблицы в пространстве имен Html:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Попробуйте сами »
Для дальнейшей организации можно иметь вложенные пространства имен:
Синтаксис
Объявите пространство имен Html внутри пространства имен Code:
namespace Code\Html;
Использование пространств имен
Любой код, следующий за объявлением namespace
, работает внутри пространства имен, поэтому классы, принадлежащие к пространству имен, могут быть созданы без каких-либо квалификаторов. Чтобы получить доступ к классам из-за пределов пространства имен, к классу необходимо присоединить пространство имен.
Пример
Используйте классы из пространства имен Html:
$table = new Html\Table()
$row = new Html\Row();
Попробуйте сами »
Когда много классов из одного и того же пространства имен используются одновременно, проще использовать ключевое слово namespace
:
Пример
Используйте классы из пространства имен Html без Html\квалификатора:
namespace Html;
$table = new Table();
$row = new Row();
Попробуйте сами »
Псевдоним пространства имен
Может быть полезно присвоить пространству имен или классу псевдоним, чтобы упростить запись. Это делается с помощью ключевого слова use
: