<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.functions.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'functions.internal.php',
    1 => 'Interne (eingebaute) Funktionen',
    2 => 'Interne (eingebaute) Funktionen',
  ),
  'up' => 
  array (
    0 => 'language.functions.php',
    1 => 'Funktionen',
  ),
  'prev' => 
  array (
    0 => 'functions.variable-functions.php',
    1 => 'Variablenfunktionen',
  ),
  'next' => 
  array (
    0 => 'functions.anonymous.php',
    1 => 'Anonyme Funktionen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/functions.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="functions.internal" class="sect1">
   <h2 class="title">Interne (eingebaute) Funktionen</h2>
   <p class="para">
    PHP enthält standardmäßig viele Funktionen und Konstrukte. Außerdem gibt
    es viele Funktionen die voraussetzen, dass bestimmte PHP-Erweiterungen
    einkompiliert wurden, andernfalls erhalten Sie beim Aufruf &quot;undefined
    function&quot;-Fehlermeldungen. Um z. B.
    <a href="ref.image.php" class="link">Grafik-Funktionen</a> wie
    <span class="function"><a href="function.imagecreatetruecolor.php" class="function">imagecreatetruecolor()</a></span> nutzen zu können, müssen Sie PHP
    mit <span class="productname">GD</span>-Unterstützung kompilieren, oder um
    <span class="function"><a href="function.mysqli-connect.php" class="function">mysqli_connect()</a></span> nutzen zu können, muss Ihr PHP mit
    <a href="book.mysqli.php" class="link">MySQLi</a>-Unterstützung kompiliert sein.
    Viele Kernfunktionen, z. B. die
    <a href="ref.strings.php" class="link">String</a>- und
    <a href="ref.var.php" class="link">Variablen</a>-Funktionen sind bereits in jeder
    PHP-Version enthalten. Ein Aufruf von <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> oder
    <span class="function"><a href="function.get-loaded-extensions.php" class="function">get_loaded_extensions()</a></span> zeigt Ihnen, welche
    Erweiterungen in Ihrer PHP-Installation verfügbar sind. Beachten Sie
    außerdem, dass viele Erweiterungen bereits standardmäßig aktiviert sind
    und das PHP-Handbuch nach Erweiterungen unterteilt ist. Weitere
    Informationen zur Einrichtung von PHP finden Sie in den Kapiteln
    <a href="configuration.php" class="link">Konfiguration</a>,
    <a href="install.php" class="link">Installation</a> und den Kapiteln zu den
    einzelnen Erweiterungen.
   </p>
   <p class="para">
    Wie Funktionsprototypen zu lesen und zu verstehen sind, wird im Kapitel
    <a href="about.prototypes.php" class="link">Wie man eine Funktionsdefinition (Prototyp) liest</a>
    erklärt. Es ist wichtig zu erkennen, was eine Funktion zurückgibt und ob
    die übergebenen Parameter verändert werden. So gibt z. B.
    <span class="function"><a href="function.str-replace.php" class="function">str_replace()</a></span> den bearbeiteten String zurück, während
    <span class="function"><a href="function.usort.php" class="function">usort()</a></span> die übergebene Variable direkt bearbeitet. Jede
    Handbuchseite enthält auch spezifische Informationen zu jeder Funktion, wie
    Informationen über ihre Parameter, die Rückgabewerte sowohl bei Erfolg als
    auch im Fehlerfall, Änderungen des Verhaltens und die Verfügbarkeit. Die
    Kenntnis dieser wichtigen (aber oft subtilen) Unterschiede ist von
    entscheidender Bedeutung für das Schreiben korrekten PHP-Codes.
   </p>
   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <span class="simpara">
     Wenn Funktionen andere Parameter erhalten als erwartet, d. h. wenn z. B.
     ein <span class="type"><a href="language.types.array.php" class="link">Array</a></span> übergeben wird, obwohl ein <span class="type"><a href="language.types.string.php" class="link">String</a></span>
     erwartet wird, so ist der Rückgabewert undefiniert. In solchen Fällen ist
     es üblich, dass <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> zurückgegeben wird. Dies ist aber nur eine
     Konvention, auf die Sie sich nicht unbedingt verlassen können. Seit
     PHP 8.0.0 sollte in diesem Fall eine
     <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span>-Exception ausgelöst werden.

    </span>
   </p></blockquote>
   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <p class="para">
     Bei eingebauten Funktionen sind skalare Typen im erzwingenden Modus
     standardmäßig nullbar. Seit PHP 8.1.0 wird in diesem Modus davon
     abgeraten, an eine interne Funktion für einen Parameter, der nicht als
     nullbar deklariert ist, <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> zu übergeben. Um sich dem Verhalten
     benutzerdefinierter Funktionen anzupassen, bei denen skalare Typen
     explizit als nullbar deklariert werden müssen, wird in diesem Fall ein
     entsprechender Missbilligungs-Hinweis ausgegeben.
    </p>

    <p class="para">
     Zum Beispiel erwartet die Funktion <span class="function"><a href="function.strlen.php" class="function">strlen()</a></span>, dass der
     Parameter <code class="literal">$string</code> eine nicht-nullbare Zeichenkette
     ist. Aus historischen Gründen erlaubt PHP, für diesen Parameter im
     erzwingenden Modus <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> zu übergeben. Der Parameter wird dabei
     stillschweigend in den Typ <span class="type"><a href="language.types.string.php" class="link">String</a></span> umgewandelt, was den
     Wert <code class="literal">&quot;&quot;</code> ergibt. Im Gegensatz dazu wird im strikten
     Modus ein <span class="classname"><a href="class.typeerror.php" class="classname">TypeError</a></span> ausgegeben.
    </p>

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">// "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated" as of PHP 8.1.0<br />// int(0)<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">// "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated" as of PHP 8.1.0<br />// bool(true)<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p></blockquote>

   <div class="sect2">
    <h3 class="title">Siehe auch</h3>
    <p class="para">
     <ul class="simplelist">
      <li><span class="function"><a href="function.function-exists.php" class="function">function_exists()</a></span></li>
      <li><a href="funcref.php" class="link">die Funktionsreferenz</a></li>
      <li><span class="function"><a href="function.get-extension-funcs.php" class="function">get_extension_funcs()</a></span></li>
      <li><span class="function"><a href="function.dl.php" class="function">dl()</a></span></li>
     </ul>
    </p>
   </div>
  </div><?php manual_footer($setup); ?>