<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.namespaces.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'language.namespaces.rationale.php',
    1 => 'Обзор',
    2 => 'Обзор пространств имён',
  ),
  'up' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Пространства имён',
  ),
  'prev' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Пространства имён',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.definition.php',
    1 => 'Пространства имён',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'language/namespaces.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.namespaces.rationale" class="sect1">
  <h2 class="title">Обзор пространств имён</h2>
  
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p>
  <p class="simpara">
   Пространства имён, в широком смысле, — способ инкапсуляции
   элементов. Такое абстрактное понятие встречается часто. Например, в каждой
   операционной системе директории группируют связанные файлы и выступают
   в роли пространства имён для находящихся в них файлов. Конкретный пример,
   разрешается размещать файл <code class="literal">foo.txt</code> сразу в обоих каталогах:
   <code class="literal">/home/greg</code> и <code class="literal">/home/other</code>, но двум копиям
   файла <code class="literal">foo.txt</code> нельзя сосуществовать в одной директории. Кроме сказанного, для доступа
   к файлу <code class="literal">foo.txt</code> извне каталога <code class="literal">/home/greg</code> надо
   через разделитель добавить перед именем файла имя директории, чтобы получить
   путь <code class="literal">/home/greg/foo.txt</code>. Этот же принцип распространяется и на пространства
   имён в программировании.
  </p>

  <p class="simpara">
   В PHP пространства имён решают две проблемы, с которыми
   сталкиваются авторы библиотек и приложений, когда создают переиспользуемые
   элементы кода, например классы и функции:
  </p>
  <p class="para">
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      Устраняют конфликт имён между кодом разработчика
      и внутренними или внешними классами, функциями, константами PHP.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Создают псевдонимы (или сокращения) для Ну_Очень_Длинных_Имён, чтобы сгладить
      первую проблему и улучшить читаемость исходного кода.
     </span>
    </li>
   </ol>
  </p>
  <p class="simpara">
   Пространства имён в PHP помогают группировать логически связанные
   классы, интерфейсы, функции и константы.
  </p>
  <div class="example" id="example-1">
   <p><strong>Пример #1 Пример синтаксиса с пространством имён</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">namespace </span><span style="color: #0000BB">my\name</span><span style="color: #007700">; </span><span style="color: #FF8000">// Смотрите раздел «Определение пространств имён»<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">MyClass </span><span style="color: #007700">{}<br />function </span><span style="color: #0000BB">myfunction</span><span style="color: #007700">() {}<br />const </span><span style="color: #0000BB">MYCONST </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">MyClass</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= new </span><span style="color: #0000BB">\my\name\MyClass</span><span style="color: #007700">; </span><span style="color: #FF8000">// Смотрите раздел «Глобальное пространство»<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #DD0000">'hi'</span><span style="color: #007700">); </span><span style="color: #FF8000">// Смотрите раздел «Пространства имён: возврат<br />                   // к глобальному пространству для функций и констант»<br /><br /></span><span style="color: #0000BB">$d </span><span style="color: #007700">= </span><span style="color: #0000BB">namespace\MYCONST</span><span style="color: #007700">; </span><span style="color: #FF8000">// Смотрите раздел «Ключевое слово namespace и магическая константа __NAMESPACE__»<br /></span><span style="color: #0000BB">$d </span><span style="color: #007700">= </span><span style="color: #0000BB">__NAMESPACE__ </span><span style="color: #007700">. </span><span style="color: #DD0000">'\MYCONST'</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">constant</span><span style="color: #007700">(</span><span style="color: #0000BB">$d</span><span style="color: #007700">); </span><span style="color: #FF8000">// Смотрите раздел «Пространства имён и динамические особенности языка»</span></span></code></div>
   </div>

  </div>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Имена пространств имён регистронезависимы.
   </span>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <p class="para">
    Название пространства имён «<code class="literal">PHP</code>» и составные названия,
    которые начинаются с этого слова (например, <code class="literal">PHP\Classes</code>), зарезервированы
    для внутренних целей языка, их не нужно писать в пользовательском коде.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>