<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/userlandnaming.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'userlandnaming.rules.php',
    1 => 'Правила',
    2 => 'Правила',
  ),
  'up' => 
  array (
    0 => 'userlandnaming.php',
    1 => 'Руководство по именованию',
  ),
  'prev' => 
  array (
    0 => 'userlandnaming.globalnamespace.php',
    1 => 'Глобальное пространство имён',
  ),
  'next' => 
  array (
    0 => 'userlandnaming.tips.php',
    1 => 'Советы',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'appendices/userlandnaming.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="userlandnaming.rules" class="section">
  <h2 class="title">Правила</h2>
  <p class="para">
   Следующий список правил даёт общее представление о правах,
   которые проект PHP оставляет за собой при выборе имён для новых внутренних идентификаторов.
   Полное руководство по добавлению или изменению кода содержит официальный
   <a href="https://github.com/php/php-src/raw/master/CODING_STANDARDS.md" class="link external">&raquo;&nbsp;Стандарт кодирования</a>:
  </p>

  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     PHP владеет пространством имён верхнего уровня, но старается находить
     хорошие описательные имена и избегать очевидных коллизий.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Названия функций содержат подчёркивания между словами, тогда как названия классов
     составляют в стиле <code class="literal">camelCase</code> и <code class="literal">PascalCase</code>.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     PHP добавляет к глобальным символам модуля префикс в виде названия модуля.
     (В прошлом из этого правила часто делали исключения, из-за которых часть названий
     нарушает правила именования.) Приведём примеры названий с префиксом:
    </p>

    <ul class="itemizedlist">
     <li class="listitem"><p class="para"><span class="function"><a href="function.curl-close.php" class="function">curl_close()</a></span></p></li>
     <li class="listitem"><p class="para"><span class="function"><a href="function.mysql-query.php" class="function">mysql_query()</a></span></p></li>
     <li class="listitem"><p class="para">PREG_SPLIT_DELIM_CAPTURE</p></li>
     <li class="listitem"><p class="para">new DOMDocument()</p></li>
     <li class="listitem">
      <p class="para">
       <span class="function"><a href="function.strpos.php" class="function">strpos()</a></span> (пример названия, которое возникло из-за ошибок прошлого)
      </p>
     </li>
     <li class="listitem"><p class="para">new SplFileObject()</p></li>
    </ul>
   </li>
   <li class="listitem">
    <p class="para">
     Однако итераторы и исключения просто получают постфиксы
     &quot;<code class="literal">Iterator</code>&quot; и &quot;<code class="literal">Exception</code>&quot;.
     Примеры:
    </p>
    <ul class="itemizedlist">
     <li class="listitem"><p class="para"><span class="classname"><a href="class.arrayiterator.php" class="classname">ArrayIterator</a></span></p></li>
     <li class="listitem"><p class="para"><span class="classname"><a href="class.logicexception.php" class="classname">LogicException</a></span></p></li>
    </ul>
   </li>
   <li class="listitem">
    <p class="para">
     PHP резервирует символы, которые начинаются с двух подчёркиваний <code class="literal">__</code>,
     как магические. Рекомендуется не создавать идентификаторы, которые начинаются
     с последовательности символов <code class="literal">__</code>, если только с целью использовать
     документированную магическую функциональность. Примеры:
    </p>
    <ul class="itemizedlist">
     <li class="listitem"><p class="para"><a href="language.oop5.overloading.php#object.get" class="link">__get()</a></p></li>
     <li class="listitem"><p class="para"><span class="function"><a href="function.autoload.php" class="function">__autoload()</a></span></p></li>
    </ul>
   </li>
  </ul>
 </div><?php manual_footer($setup); ?>