<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/mysql.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'mysqlinfo.terminology.php',
    1 => 'Обзор терминологии',
    2 => 'Обзор терминологии',
  ),
  'up' => 
  array (
    0 => 'mysql.php',
    1 => 'Обзор PHP-драйверов MySQL',
  ),
  'prev' => 
  array (
    0 => 'mysql.php',
    1 => 'Обзор PHP-драйверов MySQL',
  ),
  'next' => 
  array (
    0 => 'mysqlinfo.api.choosing.php',
    1 => 'Выбор API-интерфейса',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/mysqlinfo/set.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="mysqlinfo.terminology" class="chapter">
   <h1 class="title">Обзор терминологии</h1>

   <p class="simpara">
    Раздел описывает инструменты, которые помогают программистам разрабатывать PHP-приложения,
    которые взаимодействуют с базой данных MySQL.
   </p>

   <p class="simpara">
    <strong>Об API-интерфейсе</strong>
   </p>

   <p class="simpara">
    Программный интерфейс приложения (англ. Application Programming Interface, API)
    определяет набор классов, методов, функций и переменных, к которым приложению потребуется обращаться,
    чтобы выполнить поставленные задачи. PHP-приложения взаимодействуют с базами данных через API-интерфейсы,
    которые приложениям обычно открывают PHP-модули.
   </p>

   <p class="simpara">
    Программисты взаимодействуют с модулями через процедурный или объектно-ориентированный API-интерфейс.
    При работе через процедурный API задачи выполняют путём вызова функций,
    при взаимодействии через объектно-ориентированный API-интерфейс создают экземпляры классов,
    а затем вызывают методы этих объектов. Из этих двух интерфейсов часто выбирают последний,
    поскольку код в объектно-ориентированном стиле лучше организован, что снижает сложность
    восприятия кода и упрощает тестирование и поддержку.
   </p>

   <p class="simpara">
    Язык программирования PHP предлагает разработчикам несколько API-интерфейсов,
    через которые PHP-приложения взаимодействуют с базами данных MySQL.
    Документ описывает эти интерфейсы и даёт рекомендации
    по выбору конкретного способа подключения к базе данных из приложения.
   </p>

   <p class="simpara">
    <strong>О коннекторе</strong>
   </p>

   <p class="simpara">
    В MySQL-документации термин <em>коннектор</em> (англ. connector) относится
    к части программного обеспечения, которая разрешает приложению подключаться к серверу баз данных MySQL.
    БД MySQL предоставляет коннекторы для разных языков
    программирования, включая язык PHP.
   </p>

   <p class="simpara">
    Разработчику потребуется написать PHP-код, чтобы PHP-приложение научилось взаимодействовать
    с сервером баз данных: подключаться, отправлять запросы
    и выполнять другие операции, которые связаны с базой данных.
    Серверу баз данных потребуется ПО, чтобы предоставить API-интерфейс,
    через который PHP-приложение будет взаимодействовать с сервером,
    и чтобы управлять обменом информацией между приложением и сервером баз данных,
    для чего иногда также требуются промежуточные библиотеки.
    Это программное обеспечение называется коннектором, поскольку разрешает приложению
    <em>подключаться</em> (англ. to connect) к серверу баз данных.
   </p>

   <p class="simpara">
    <strong>О драйвере</strong>
   </p>

   <p class="simpara">
    Драйвер — часть программного обеспечения, которую разработали
    для взаимодействия приложения с конкретным типом сервера баз данных.
    Приложение вызывает методы коннектора, тот обращается к своему драйверу конкретной СУБД,
    а драйвер со своей стороны обращается к нижележащим библиотекам —
    клиентской библиотеке MySQL Client Library или встроенному драйверу MySQL Native Driver.
    Эти библиотеки реализуют низкоуровневый протокол взаимодействия с MySQL-сервером баз данных.
   </p>

   <p class="simpara">
    Например, PHP-модуль <a href="mysqli.overview.php#mysqli.overview.pdo" class="link">PDO</a>, который поддерживает доступ
    к базам данных на уровне абстракции, содержит набор драйверов для доступа к конкретным базам данных.
    В список доступных модулю драйверов входит драйвер PDO_MYSQL,
    который разрешает модулю PDO взаимодействовать с сервером MySQL.
   </p>

   <p class="simpara">
    Термины «коннектор» и «драйвер» иногда употребляют как синонимы,
    это сбивает с толку. В MySQL-документации термин <q class="quote">драйвер</q>
    зарезервировали за программным обеспечением, которое предоставляет
    часть пакета коннектора для конкретной базы данных.
   </p>

   <p class="simpara">
    <strong>О модуле</strong>
   </p>

   <p class="simpara">
    В PHP-документации встречается ещё один термин — <em>модуль</em>.
    Код самого PHP состоит из ядра и дополнительных модулей, которые расширяют
    функциональность ядра. Для работы с СУБД MySQL ядро PHP расширили модулем
    <code class="literal">mysqli</code> и модулем PDO с MySQL-драйвером. Оба модуля включили
    в инфраструктуру модулей языка PHP.
   </p>

   <p class="simpara">
    Обычно модули предоставляют PHP-программисту API-интерфейс,
    через который разработчик получает доступ к функциям модуля программно.
    При этом отдельные модули в инфраструктуре PHP-модулей не раскрывают для программиста никаких интерфейсов.
   </p>

   <p class="simpara">
    MySQL-драйвер модуля PDO, например, не раскрывает API-интерфейс для программиста,
    но предоставляет интерфейс вышележащему абстрактному слою, который представляет модуль PDO.
   </p>

   <p class="simpara">
    Термины «API-интерфейс» и «модуль» нельзя воспринимать как одно и то же,
    поскольку модуль не обязан раскрывать API-интерфейс для программиста.
   </p>
  </div>
<?php manual_footer($setup); ?>