<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/about.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'about.prototypes.php',
    1 => 'Как читать определения функции (прототип)',
    2 => 'Как читать определения функции (прототип)',
  ),
  'up' => 
  array (
    0 => 'about.php',
    1 => 'О руководстве',
  ),
  'prev' => 
  array (
    0 => 'about.notes.php',
    1 => 'О заметках пользователей',
  ),
  'next' => 
  array (
    0 => 'about.phpversions.php',
    1 => 'Версии PHP, которые задокументировали в руководстве',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'appendices/about.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="about.prototypes" class="sect1">
  <h2 class="title">Как читать определения функции (прототип)</h2>
  <p class="para">
   Каждую функцию в руководстве документировали для быстрого ознакомления.
   Зная, как правильно читать и понимать текст, намного проще изучать PHP.
   Вместо того, чтобы полагаться на примеры или копировать и вставлять их, лучше
   понять, как читать определения функций (прототипы). Давайте начнём:
  </p>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <strong>
    Предпосылки: Базовое понимание <a href="language.types.php" class="link">типов</a>
   </strong><br />
   <p class="para">
    Хотя PHP и слабо типизированный язык, важно иметь базовое
    представление о <a href="language.types.php" class="link">типах</a>, поскольку типы играют
    большую роль в PHP.
   </p>
  </p></blockquote>
  <p class="para">
   Определения функций показывают, значения какого типа они
   <a href="functions.returning-values.php" class="link">возвращают</a>.
   В качестве первого примера возьмём определение функции <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
strlen

(PHP 4, PHP 5, PHP 7)
strlen -- Возвращает длину строки

Описание
strlen ( string $string ) : int

Возвращает длину переданной строки.
</pre></div>
   </div>
  </p>
  <p class="para">
   <table class="doctable table">
    <caption><strong>Объяснение определения функции</strong></caption>
    
     <thead>
      <tr>
       <th>Часть</th>
       <th>Описание</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>
        strlen
       </td>
       <td>
        Имя функции.
       </td>
      </tr>

      <tr>
       <td>
        (PHP 4, PHP 5, PHP 7)
       </td>
       <td>
        strlen() есть в каждой версии PHP: 4, 5 и 7
       </td>
      </tr>

      <tr>
       <td>
        ( string $string )
       </td>
       <td>
        Первый (и в нашем случае — единственный) параметр этой функции
        называется <code class="parameter">string</code>, а его тип —
        строка (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>).
       </td>
      </tr>

      <tr>
       <td>
        int
       </td>
       <td>
        Тип значения, который возвращает эта функция, —
        число (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>) (поскольку длина строки измеряется числом).
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   Можно переписать вышеуказанное определение функции в более общем виде:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
      имя функции    ( тип параметра   имя параметра ) : возвращаемый тип
</pre></div>
   </div>
  </p>
  <p class="para">
   Многие функции принимают несколько аргументов, например, функция <span class="function"><a href="function.in-array.php" class="function">in_array()</a></span>.
   Её прототип выглядит так:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
      in_array ( mixed $needle, array $haystack , bool $strict = false ) : bool
</pre></div>
   </div>
  </p>
  <p class="para">
   Что это означает? Функция in_array() возвращает
   <a href="language.types.boolean.php" class="link">логическое значение</a>: <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> в случае
   успешного выполнения (если функция нашла параметр <code class="parameter">needle</code>
   в параметре <code class="parameter">haystack</code>) или <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, если возникла ошибка (если
   функция не нашла параметр <code class="parameter">needle</code> в параметре
   <code class="parameter">haystack</code>). Первый параметр называется
   <code class="parameter">needle</code> («иголка») и принимает разные
   <a href="language.types.php" class="link">типы</a>, поэтому он называется
   «<em>смешанным</em>». Этот смешанный параметр <code class="parameter">needle</code>
   (то, что мы ищем) может быть любым скалярным значением (string, integer,
   или <a href="language.types.float.php" class="link">float</a>), либо
   <a href="language.types.array.php" class="link">массивом</a>.
   Параметр <code class="parameter">haystack</code> («стог сена», массив, в котором мы ищем) —
   второй параметр. Третий <em>необязательный</em> параметр
   называется <code class="parameter">strict</code> («строгий»). У каждого необязательного параметра есть
   значение по умолчанию; если значение по умолчанию неизвестно, оно отображается как <code class="literal">?</code>
   Руководство указывает, что параметр <code class="parameter">strict</code>
   по умолчанию принимает логическое значение <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
   Смотрите отдельную страницу документации по каждой функции для более подробной
   информации по их работе.
  </p>
  <p class="para">
   Символ &amp; (амперсанд) перед параметром функции разрешает передавать
   значение параметра <a href="language.references.pass.php" class="link">по ссылке</a>:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
       preg_match ( string $pattern , string $subject , array &amp;$matches = null,
       int $flags = 0 , int $offset = 0 ) : int|false
</pre></div>
   </div>
  </p>
  <p class="para">
   В этом примере мы можем использовать третий необязательный параметр
   <code class="parameter">&amp;$matches</code>, который передаётся по ссылке.
  </p>
  <p class="para">
   Есть также функции с более сложной информацией о версиях PHP.
   Возьмём в качестве примера функцию <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span>:
  </p>
  <p class="para">
   <div class="example-contents screen">
<div class="cdata"><pre>
(PHP 4 &gt;= 4.3.0, PHP 5, PHP 7)
</pre></div>
   </div>
  </p>
  <p class="para">
   Это означает, что функция появилась в официальных версиях языка только с выхода PHP 4.3.0.
  </p>
 </div><?php manual_footer($setup); ?>