<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.constants.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'language.constants.syntax.php',
    1 => 'Syntax',
    2 => 'Syntax',
  ),
  'up' => 
  array (
    0 => 'language.constants.php',
    1 => 'Konstanten',
  ),
  'prev' => 
  array (
    0 => 'language.constants.php',
    1 => 'Konstanten',
  ),
  'next' => 
  array (
    0 => 'language.constants.predefined.php',
    1 => 'Vordefinierte Konstanten',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/constants.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.constants.syntax" class="sect1">
   <h2 class="title">Syntax</h2>
   <p class="simpara">
    Konstanten können mit dem Schlüsselwort <code class="literal">const</code> oder mit
    der Funktion <span class="function"><a href="function.define.php" class="function">define()</a></span> definiert werden. Während
    <span class="function"><a href="function.define.php" class="function">define()</a></span> es ermöglicht, eine Konstante auf einen
    beliebigen Wert zu definieren, hat das Schlüsselwort
    <code class="literal">const</code> Einschränkungen, die im nächsten Absatz
    beschrieben werden. Einmal definiert, kann eine Konstante weder verändert
    noch gelöscht werden.
   </p>
   <p class="simpara">
    Wenn das Schlüsselwort <code class="literal">const</code> verwendet wird, werden nur
    skalare Ausdrücke (<span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>, <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>, <span class="type"><a href="language.types.float.php" class="type float">float</a></span>
    und <span class="type"><a href="language.types.string.php" class="type string">string</a></span>) und konstante <span class="type"><a href="language.types.array.php" class="type Array">Array</a></span>s, die nur
    skalare Ausdrücke enthalten, akzeptiert. Es ist möglich, Konstanten vom
    Typ <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> zu definieren, dies sollte allerdings vermieden
    werden, da es zu unerwarteten Ergebnissen führen kann.
   </p>
   <p class="simpara">
    Auf den Wert einer Konstanten wird einfach durch die Angabe ihres Namens
    zugegriffen. Im Gegensatz zu Variablen wird einer Konstanten
    <em>kein</em> <code class="literal">$</code> vorangestellt. Ebenso kann
    die Funktion <span class="function"><a href="function.constant.php" class="function">constant()</a></span> verwendet werden, um den Wert
    einer Konstanten auszulesen, wenn der Name der Konstanten dynamisch
    ermittelt wird. Mit der Funktion
    <span class="function"><a href="function.get-defined-constants.php" class="function">get_defined_constants()</a></span> erhält man eine Liste aller
    definierten Konstanten.
   </p>

   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <span class="simpara">
     Konstanten und (globale) Variablen befinden sich in unterschiedlichen
     Namensräumen. Das hat zum Beispiel zur Folge, dass <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> und
     <var class="varname">$TRUE</var> etwas völlig Verschiedenes sind.
    </span>
   </p></blockquote>

   <p class="simpara">
    Falls eine undefinierte Konstante verwendet wird, wird ein
    <span class="classname"><a href="class.error.php" class="classname">Error</a></span> ausgelöst. Vor PHP 8.0.0 wurden undefinierte
    Konstanten als einfaches <span class="type"><a href="language.types.string.php" class="link">String</a></span>-Wort (d. h. CONSTANT vs
    &quot;CONSTANT&quot;) interpretiert. Dieses Rückfallverhalten ist von PHP 7.2.0 an
    missbilligt, und ein Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> wird
    ausgelöst, wenn es dazu kommt. Vor PHP 7.2.0 wurde stattdessen ein Fehler
    der Stufe
    <a href="ref.errorfunc.php" class="link">E_NOTICE</a><strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>
    ausgelöst. Siehe auch den Abschnitt im Handbuch, der erklärt, warum
    <a href="language.types.array.php#language.types.array.foo-bar" class="link">$foo[bar]</a> falsch ist
    (es sei denn, <code class="literal">bar</code> ist eine Konstante). Dies gilt nicht
    für
    <a href="language.namespaces.rules.php" class="link">(vollständig) qualifizierte Konstanten</a>,
    die immer einen <span class="classname"><a href="class.error.php" class="classname">Error</a></span> auslösen, wenn sie
    undefiniert sind.
   </p>

   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <span class="simpara">
     Um zu prüfen, ob eine Konstante gesetzt ist, kann die Funktion
     <span class="function"><a href="function.defined.php" class="function">defined()</a></span> verwendet werden.
    </span>
   </p></blockquote>

   <p class="para">
    Dies sind die Unterschiede zwischen Konstanten und Variablen:
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       Konstanten haben kein Dollarzeichen (<code class="literal">$</code>) vorangestellt;
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Konstanten können überall definiert werden und auf Ihren Wert kann ohne
       Rücksicht auf die Regeln des Geltungsbereichs von Variablen zugegriffen
       werden;
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Sobald Konstanten definiert sind, können sie nicht neu definiert oder
       gelöscht werden; und
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Konstanten können nur als skalare Werte oder Arrays ausgewertet werden.
      </span>
     </li>
    </ul>
   </p>

   <p class="para">
    <div class="example" id="example-2">
     <p><strong>Beispiel #1 Definition von Konstanten</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />define</span><span style="color: #007700">(</span><span style="color: #DD0000">"KONSTANTE"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Hallo Welt."</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">KONSTANTE</span><span style="color: #007700">;     </span><span style="color: #FF8000">// Ausgabe: "Hallo Welt."<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">Konstante</span><span style="color: #007700">;     </span><span style="color: #FF8000">// Gibt einen Fehler aus: Undefined Constant "Konstante"<br />                    // Vor PHP 8.0.0 wird "Konstante" ausgegeben und eine<br />                    // Warnung angezeigt.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Beispiel #2 Definition von Konstanten unter Verwendung des Schlüsselworts <code class="literal">const</code></strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Einfacher skalarer Wert<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">KONSTANTE </span><span style="color: #007700">= </span><span style="color: #DD0000">'Hallo Welt'</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">KONSTANTE</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Skalarer Ausdruck<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">ANDERE_KONSTANTE </span><span style="color: #007700">= </span><span style="color: #0000BB">KONSTANTE </span><span style="color: #007700">. </span><span style="color: #DD0000">'; Ade Welt'</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">ANDERE_KONSTANTE</span><span style="color: #007700">;<br /><br />const </span><span style="color: #0000BB">ANIMALS </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'Hund'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Katze'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Maus'</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">ANIMALS</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// gibt "Katze" aus<br /><br />// Array-Konstante<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'ANIMALS'</span><span style="color: #007700">, array(<br />    </span><span style="color: #DD0000">'Hund'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'Katze'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'Maus'<br /></span><span style="color: #007700">));<br />echo </span><span style="color: #0000BB">ANIMALS</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// gibt "Katze" aus<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <p class="para">
     Im Gegensatz zu Konstanten, welche mit <span class="function"><a href="function.define.php" class="function">define()</a></span>
     erstellt werden, müssen über <code class="literal">const</code> definierte
     Konstanten auf der höchsten Ebene erstellt werden, weil sie bei der
     Kompilierung definiert werden. Das heißt, dass sie nicht innerhalb von
     Funktionen, Schleifen, <code class="literal">if</code>-Anweisungen oder
     <code class="literal">try</code>/<code class="literal">catch</code>-Blöcken definiert werden
     können.
    </p>
   </p></blockquote>

   <div class="sect2">
    <h3 class="title">Siehe auch</h3>
    <p class="para">
     <ul class="simplelist">
      <li><a href="language.oop5.constants.php" class="link">Klassenkonstanten</a></li>
     </ul>
    </p>
   </div>
  </div><?php manual_footer($setup); ?>