<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'mysqlinfo.terminology.php',
    1 => '&Uuml;bersicht &uuml;ber die Terminologie',
    2 => '&Uuml;bersicht &uuml;ber die Terminologie',
  ),
  'up' => 
  array (
    0 => 'mysql.php',
    1 => '&Uuml;bersicht &uuml;ber die PHP-Treiber f&uuml;r MySQL',
  ),
  'prev' => 
  array (
    0 => 'mysql.php',
    1 => '&Uuml;bersicht &uuml;ber die PHP-Treiber f&uuml;r MySQL',
  ),
  'next' => 
  array (
    0 => 'mysqlinfo.api.choosing.php',
    1 => 'Auswahl einer API',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    '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">Übersicht über die Terminologie</h1>

   <p class="simpara">
    Dieser Abschnitt bietet eine Einführung in die Möglichkeiten, die bei der
    Entwicklung einer PHP-Anwendung, die mit einer MySQL-Datenbank
    interagieren muss, zur Verfügung stehen.
   </p>

   <p class="simpara">
    <strong>Was ist eine API?</strong>
   </p>

   <p class="simpara">
    Eine API (Application Programming Interface, Schnittstelle für die
    Anwendungsprogrammierung) definiert die Klassen, Methoden, Funktionen und
    Variablen, die eine Anwendung aufrufen muss, um die gewünschte Aufgabe zu
    erfüllen. Im Falle von PHP-Anwendungen, die mit Datenbanken kommunizieren
    müssen, werden die erforderlichen APIs in der Regel über PHP-Erweiterungen
    bereitgestellt.
   </p>

   <p class="simpara">
    APIs können entweder prozedural oder objektorientiert sein. Bei einer
    prozeduralen API werden Funktionen aufgerufen, um Aufgaben auszuführen,
    während bei einer objektorientierten API Klassen instanziiert und dann die
    Methoden der resultierenden Objekte aufgerufen werden. Von den beiden ist
    die letztere in der Regel die bevorzugte Schnittstelle, da sie moderner
    ist und zu besser strukturiertem Code führt.
   </p>

   <p class="simpara">
    Wenn eine PHP-Anwendung geschrieben wird, die sich mit dem MySQL-Server
    verbinden muss, stehen mehrere APIs zur Verfügung. In diesem Dokument wird
    beschrieben, welche Möglichkeiten es gibt und welche die beste Wahl für
    die jeweilige Anwendung ist.
   </p>

   <p class="simpara">
    <strong>Was ist ein Konnektor?</strong>
   </p>

   <p class="simpara">
    Der Begriff Konnektor, wie er in der MySQL-Dokumentation verwendet wird,
    bezieht sich auf Software, die es ermöglicht, von einer Anwendung aus eine
    Verbindung zum MySQL-Datenbankserver herzustellen. MySQL bietet
    Konnektoren für verschiedene Sprachen, darunter PHP.
   </p>

   <p class="simpara">
    Wenn eine PHP-Anwendung mit einem Datenbankserver kommunizieren soll, muss
    PHP-Code geschrieben werden, der die Verbindung zum Datenbankserver, die
    Abfrage der Datenbank und andere datenbankbezogene Funktionen ermöglicht.
    Es wird eine Software benötigt, die die API für die Kommunikation zwischen
    der Anwendung und dem Datenbankserver zur Verfügung stellt und
    gegebenenfalls andere zwischengeschaltete Bibliotheken verwendet. Diese
    Software wird allgemein als Konnektor bezeichnet, weil sie es der
    Anwendung ermöglicht, sich mit einem Datenbankserver zu verbinden.
   </p>

   <p class="simpara">
    <strong>Was ist ein Treiber?</strong>
   </p>

   <p class="simpara">
    Ein Treiber ist ein Stück Software, das für die Kommunikation mit einem
    bestimmten Typ von Datenbankserver entwickelt wurde. Der Treiber kann auch
    eine Bibliothek aufrufen, z. B. die MySQL Client Library oder den MySQL
    Native Driver. Diese Bibliotheken implementieren das Low-Level-Protokoll,
    das für die Kommunikation mit dem MySQL-Datenbankserver verwendet wird.
   </p>

   <p class="simpara">
    So verwendet beispielsweise die Datenbank-Abstraktionsschicht
    <a href="mysqli.overview.php#mysqli.overview.pdo" class="link">PHP Data Objects (PDO)</a> einen
    von mehreren datenbankspezifischen Treibern. Einer der verfügbaren Treiber
    ist der PDO-MYSQL-Treiber, der eine Schnittstelle zum MySQL-Server bietet.
   </p>

   <p class="simpara">
    Manchmal werden die Begriffe Konnektor und Treiber synonym verwendet, was
    verwirrend sein kann. In der MySQL-Dokumentation ist der Begriff &quot;Treiber&quot;
    für Software reserviert, die den datenbankspezifischen Teil eines
    Konnektor-Pakets bereitstellt.
   </p>

   <p class="simpara">
    <strong>Was ist eine Erweiterung?</strong>
   </p>

   <p class="simpara">
    In der PHP-Dokumentation wird häufig der Begriff
    <em>Erweiterung</em> verwendet. Der PHP-Code besteht aus einem
    Kern und optionalen Erweiterungen der Kernfunktionalität. Die
    PHP-Erweiterung für MySQL, <code class="literal">mysqli</code>, wird mit Hilfe des
    PHP-Frameworks für Erweiterungen implementiert.
   </p>

   <p class="simpara">
    Damit die Funktionen einer Erweiterung von PHP-Programmierern
    programmtechnisch genutzt werden können, stellt diese in der Regel eine
    API zur Verfügung. Allerdings stellen nicht alle Erweiterungen, die das
    Framework für PHP-Erweiterungen verwenden, dem PHP-Programmierer eine API
    zur Verfügung.
   </p>

   <p class="simpara">
    Der PDO-Treiber für MySQL beispielsweise stellt dem PHP-Programmierer
    keine API zur Verfügung, sondern eine Schnittstelle zur darüber liegenden
    PDO-Schicht.
   </p>

   <p class="simpara">
    Die Begriffe API und Erweiterung sollten nicht als gleichbedeutend
    angesehen werden, da eine Erweiterung dem Programmierer nicht unbedingt
    eine API zur Verfügung stellt.
   </p>
  </div>
<?php manual_footer($setup); ?>