<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/tutorial.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'uk',
  ),
  'this' => 
  array (
    0 => 'tutorial.useful.php',
    1 => 'Дещо корисне',
    2 => 'Дещо корисне',
  ),
  'up' => 
  array (
    0 => 'tutorial.php',
    1 => 'Простий підручник',
  ),
  'prev' => 
  array (
    0 => 'tutorial.firstpage.php',
    1 => 'Перша сторінка на PHP',
  ),
  'next' => 
  array (
    0 => 'tutorial.forms.php',
    1 => 'Робота з формами',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'uk',
    'path' => 'chapters/tutorial.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="tutorial.useful" class="section">
   <div class="info"><h1 class="title">Дещо корисне</h1></div>
   <p class="para">
    А тепер зробімо щось корисне. Ми збираємось перевірити, який саме браузер
    використовує відвідувач. Для цього ми перевіримо рядок, який відправляє
    браузер як частину HTTP запиту. Ця інформація зберігається в
    <a href="language.variables.php" class="link">змінній</a>. В PHP змінні завжди
    починаються зі знака долара. Зараз нам цікава змінна
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var>.
   </p>
   <blockquote class="note"><p><strong class="note">Зауваження</strong>: 
    <p class="para">
     <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> - це спеціальна зарезервована змінна PHP, що
     містить всю інформацію отриману від вебсервера. Її також називають
     суперглобальною. Докладніша інформація є на сторінці
     <a href="language.variables.superglobals.php" class="link">Суперглобальні змінні</a>.
    </p>
   </p></blockquote>
   <p class="para">
    Давайте подивимось на значення цієї змінної:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <div class="info"><p><strong>Приклад #1 Друк змінної (елемент масива)</strong></p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>
     Скрипт надрукує приблизно таке:
    </p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Mozilla/5.0 (Linux) Firefox/112.0
</pre></div>
    </div>
   </div>
   </p>
   <p class="para">
    В PHP існує багато <a href="language.types.php" class="link">типів</a> змінних. В
    попередньому прикладі ми друкували елемент зі
    змінної-<a href="language.types.array.php" class="link">масиву</a>. Масиви можуть
    бути дуже корисними.
   </p>
   <p class="para">
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER</a></var> є однією зі змінних, яку PHP автоматично
    створює для вас. Довший список таких змінних можна проглянути в розділі
    <a href="reserved.variables.php" class="link">Зарезервовані змінні</a>, або ж ви
    можете роздрукувати весь їхній список, викликавши функцію
    <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>, яку ми вже використовували в попередньому
    абзаці.
   </p>
   <p class="para">
    Можна вкладати декілька рядків коду всередині тегів PHP та створювати
    невеликі блоки коду, що можуть робити більше, ніж простий виклик echo.
    Наприклад, якщо ви хочете створити перевірку для Firefox, це можна зробити
    так:
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <div class="info"><p><strong>Приклад #2 Використання <a href="language.control-structures.php" class="link">
     структур контролю</a> та
     <a href="language.functions.php" class="link">функцій</a>
     </strong></p>
     </div>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br />    echo </span><span style="color: #DD0000">'Ви використовуєте Firefox.'</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      Результат цього скрипта може бути таким:
     </p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
Ви використовуєте Firefox.
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Тут використовується кілька нових понять. По-перше, це вираз
    <a href="control-structures.if.php" class="link">if</a>.
    Якщо ви знайомі з базовим синтаксисом, що використовується в мові C, то цей
    вираз буде для вас теж знайомим. В іншому випадку, вам ймовірно слід
    підібрати підручник з PHP для початківців та прочитати перші кілька
    розділів, або прочитати главу <a href="langref.php" class="link">Довідник з PHP</a>
    даного посібника.
   </p>
   <p class="para">
    Друге поняття, яке ми ввели - це виклик функції
    <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>. Функція <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>
    вбудована в PHP, вона визначає наявність одного рядка всередині іншого. У
    даному випадку ми шукаємо підрядок <code class="literal">&#039;Firefox&#039;</code> (т. зв.
    needle, &quot;голку&quot;) всередині значення змінної
    <var class="varname"><a href="reserved.variables.server.php" class="classname">$_SERVER['HTTP_USER_AGENT']</a></var> (у т. зв. haystack, &quot;копиці
    сіна&quot;). І якщо підрядок буде знайдено, то функція поверне true. Якщо ні —
    <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>. Якщо ж вона повертає <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, вираз
    <a href="control-structures.if.php" class="link">if</a> буде оцінено як <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
    (істина) та виконається код всередині {фігурних дужок}. А інакше код
    запускатись не буде. Спробуйте створити аналогічні приклади, використовуючи
    <a href="control-structures.if.php" class="link">if</a>, 
    <a href="control-structures.else.php" class="link">else</a>, та інші функції такі
    як <span class="function"><a href="function.strtoupper.php" class="function">strtoupper()</a></span> та <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>. В даному
    посібнику є ще багато прикладів, майже для кожної функції. Якщо ви не
    впевнені як використовувати функції, то можна прочитати
    <a href="about.prototypes.php" class="link">як читати визначення функцій</a> та
    розділ про <a href="language.functions.php" class="link">функції PHP</a>.
   </p>
   <p class="para">
    Ми можемо піти ще далі та показати як можна входити і виходити з режиму PHP
    навіть всередині виразу PHP:
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <div class="info"><p><strong>Приклад #3 Змішаний код HTML та PHP</strong></p></div>
     <div class="example-contents">

<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">], </span><span style="color: #DD0000">'Firefox'</span><span style="color: #007700">)) {<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;h3&gt;str_contains() повернула true&lt;/h3&gt;<br />&lt;p&gt;Ви використовуєте Firefox&lt;/p&gt;<br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">} else {<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;h3&gt;str_contains() повернула false&lt;/h3&gt;<br />&lt;p&gt;Ви не використовуєте Firefox&lt;/p&gt;<br /><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      Приклад виводу скрипта:
     </p></div>
     <div class="example-contents screen">
<div class="cdata"><pre>
&lt;h3&gt;str_contains() повернула true&lt;/h3&gt;
&lt;p&gt;Ви використовуєте Firefox&lt;/p&gt;
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Замість того, щоб використовувати в PHP вираз echo для виведення чогось, ми
    вийшли з режиму PHP та безпосередньо відправляємо код HTML. Тут дуже важливо
    відзначити, що таким чином не змінюється логічна структура скрипта. У
    підсумку лише один з блоків HTML буде відправлено в браузер, в залежності
    від результату, поверненого функцією <span class="function"><a href="function.str-contains.php" class="function">str_contains()</a></span>.
    Іншими словами, це залежить від того, чи буде знайдено рядок
    <code class="literal">Firefox</code>.
   </p>
  </div><?php manual_footer($setup); ?>