Учебник по PHP

PHP ГЛАВНАЯ Введение в PHP Установка PHP Синтаксис PHP Комментарии PHP PHP-переменные PHP-эхо/печать Типы данных PHP PHP-строки PHP-номера PHP-математика PHP-константы PHP-операторы PHP Если... Иначе... Иначе PHP-переключатель PHP-циклы PHP-функции PHP-массивы PHP-суперглобальные переменные PHP регулярное выражение

PHP- формы

Обработка форм PHP Проверка формы PHP Требуется PHP-форма URL-адрес формы PHP/электронная почта PHP-форма завершена

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

Дата и время PHP PHP включает Обработка файлов PHP Открытие/чтение файла PHP Создание/запись файла PHP Загрузка файла PHP PHP-куки PHP-сессии PHP-фильтры Расширенные фильтры PHP Функции обратного вызова PHP PHP JSON Исключения PHP

PHP ООП

PHP Что такое ООП PHP-классы/объекты PHP-конструктор PHP-деструктор Модификаторы доступа PHP Наследование PHP PHP-константы Абстрактные классы PHP PHP-интерфейсы Особенности PHP Статические методы PHP Статические свойства PHP Пространства имен PHP Итерации PHP

База данных MySQL

База данных MySQL Подключиться к MySQL MySQL Создать БД MySQL Создать таблицу Вставка данных MySQL MySQL Получить последний идентификатор MySQL Вставить несколько MySQL подготовлен Выбор данных MySQL MySQL Где Порядок MySQL MySQL Удалить данные Данные обновления MySQL Предельные данные MySQL

PHP XML

XML-парсеры PHP Парсер PHP SimpleXML PHP SimpleXML — Получить PHP XML Expat PHP XML DOM

PHP — АЯКС

Введение в АЯКС АЯКС PHP База данных AJAX АЯКС XML AJAX-поиск в реальном времени АЯКС-опрос

Примеры PHP

Примеры PHP PHP-компилятор PHP-викторина PHP-упражнения PHP-сертификат

Справочник по PHP

Обзор PHP PHP-массив Календарь PHP Дата PHP PHP-каталог Ошибка PHP PHP-исключение Файловая система PHP PHP-фильтр PHP FTP PHP JSON Ключевые слова PHP PHP-библиотека XML PHP-почта PHP-математика PHP Разное PHP MySQLi PHP-сеть Управление выводом PHP PHP регулярное выражение PHP SimpleXML PHP-поток PHP-строка Обработка переменных PHP XML-парсер PHP PHP-архив Часовые пояса PHP

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


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

Пространства имен — это квалификаторы, решающие две разные проблемы:

  1. Они обеспечивают лучшую организацию, группируя классы, которые работают вместе для выполнения задачи.
  2. Они позволяют использовать одно и то же имя для более чем одного класса.

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


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

Пространства имен объявляются в начале файла с помощью namespaceключевого слова:

Синтаксис

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

namespace Html;

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

<?php
echo "Hello World!";
namespace Html;
...
?>

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

Пример

Создайте класс Table в пространстве имен 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\qualifier:

namespace Html;
$table = new Table();
$row = new Row();

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

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

Пример

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

use Html as H;
$table = new H\Table();

Пример

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

use Html\Table as T;
$table = new T();