<?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 => 'uk',
  ),
  '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' => 'uk',
    '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>
    Обов&#039;язкова умова: початкове розуміння 
    <a href="language.types.php" class="link">типів</a>
   </strong><br />
   <p class="para">
    Хоча PHP — це мова зі слабкою типізацією, треба мати хоча би поверхневе 
    уявлення про <a href="language.types.php" class="link">типи</a> та чому вони 
    важливі.
   </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>
      ім&#039;я функції    ( тип параметра   ім&#039;я переметра ) : тип, що повертається
</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>, тож ми називаємо його
   &quot;<em>mixed</em>&quot; (змішаним).  Це <code class="parameter">needle</code> 
   (шукане) зі змішаним типом може мати скалярне значення (рядок, ціле 
   число, <a href="language.types.float.php" class="link">число з рухомою точкою</a>)
   або бути <a href="language.types.array.php" class="link">масивом</a>.
   <code class="parameter">haystack</code> (масив, в якому буде здійснено пошук) — це 
   другий параметр. Третій <em>необов&#039;язковий</em> параметр 
   називається <code class="parameter">strict</code>.  Усі необов&#039;язкові параметри 
   мають початкові значення; якщо початкове значення невідоме, то це показано
   символом <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">
   В цьому прикладі ми бачимо, що третій необов&#039;язковий параметр 
   <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); ?>