<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reserved.variables.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'reserved.variables.globals.php',
    1 => '$GLOBALS',
    2 => 'Referenziert alle Variablen, die im globalen G&uuml;ltigkeitsbereich
   vorhanden sind',
  ),
  'up' => 
  array (
    0 => 'reserved.variables.php',
    1 => 'Vordefinierte Variablen',
  ),
  'prev' => 
  array (
    0 => 'language.variables.superglobals.php',
    1 => 'Superglobals',
  ),
  'next' => 
  array (
    0 => 'reserved.variables.server.php',
    1 => '$_SERVER',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/predefined/variables/globals.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="reserved.variables.globals" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">$GLOBALS</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">$GLOBALS</span> &mdash; <span class="dc-title">Referenziert alle Variablen, die im globalen Gültigkeitsbereich
   vorhanden sind</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-reserved.variables.globals-description">
  <h3 class="title">Beschreibung</h3>
  <p class="para">
   Ein assoziatives <span class="type"><a href="language.types.array.php" class="type Array">Array</a></span>, das Referenzen auf alle Variablen enthält,
   die derzeit im globalen Gültigkeitsbereich (Scope) des Skripts bekannt sind.
   Die Namen der jeweiligen Variablen sind die Schlüsselwerte, um auf den Inhalt
   der jeweils referenzierten Variablen zuzugreifen.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-reserved.variables.globals-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="variable.globals.basic">
    <p><strong>Beispiel #1 <var class="varname">$GLOBALS</var>-Beispiel</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">()<br />{<br />    </span><span style="color: #0000BB">$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">"local variable"</span><span style="color: #007700">;<br /><br />    echo </span><span style="color: #DD0000">'$foo in global scope: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">[</span><span style="color: #DD0000">"foo"</span><span style="color: #007700">] . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    echo </span><span style="color: #DD0000">'$foo in current scope: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$foo </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">"Example content"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">test</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt
eine ähnliche Ausgabe wie:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">$foo in global scope: Example content
$foo in current scope: local variable</pre>
</div>
    </div>
   </div>
  </p>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    Seit PHP 8.1.0 wird der Schreibzugriff auf das gesamte
    <var class="varname">$GLOBALS</var>-Array nicht mehr unterstützt:
    <div class="example" id="variable.globals.entire_write_error">
     <p><strong>Beispiel #2 Das Schreiben des gesamten <var class="varname">$GLOBALS</var> führt zu einem Fehler</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// Erzeugt einen Kompilierungsfehler:<br /></span><span style="color: #0000BB">$GLOBALS </span><span style="color: #007700">= [];<br /></span><span style="color: #0000BB">$GLOBALS </span><span style="color: #007700">+= [];<br /></span><span style="color: #0000BB">$GLOBALS </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$x</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$x </span><span style="color: #007700">=&amp; </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">;<br />unset(</span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">array_pop</span><span style="color: #007700">(</span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// ...und jede andere Schreib-/Lese-Schreiboperation auf $GLOBALS<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

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


 <div class="refsect1 notes" id="refsect1-reserved.variables.globals-notes">
  <h3 class="title">Anmerkungen</h3>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: <p class="para">Dies ist eine &#039;Superglobale&#039;
oder automatisch globale Variable. Dies bedeutet, dass sie innerhalb
des Skripts in jedem Geltungsbereich sichtbar ist. Es ist nicht
nötig, sie mit <strong class="command">global $variable</strong> bekannt zu
machen, um aus Funktionen oder Methoden darauf zuzugreifen.</p>
</p></blockquote>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <strong>Verfügbarkeit der Variablen</strong><br />
   <p class="para">
    Im Gegensatz zu allen anderen
    <a href="language.variables.superglobals.php" class="link">Superglobals</a> ist
    <var class="varname">$GLOBALS</var> notwendigerweise immer in PHP verfügbar.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Seit PHP 8.1.0 ist <var class="varname">$GLOBALS</var> eine schreibgeschützte
    Kopie der globalen
    <a href="features.gc.refcounting-basics.php" class="link">Symboltabelle</a>. Das
    heißt, globale Variablen können nicht über diese Kopie verändert werden.
    Zuvor war das Array <var class="varname">$GLOBALS</var> vom üblichen Verhalten der
    Wertübergabe (by-value) von PHP-Arrays ausgenommen und globale Variablen
    konnten über seine Kopie geändert werden.
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// Vor PHP 8.1.0<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$globals </span><span style="color: #007700">= </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">; </span><span style="color: #FF8000">// Eine by-value-Kopie<br /></span><span style="color: #0000BB">$globals</span><span style="color: #007700">[</span><span style="color: #DD0000">'a'</span><span style="color: #007700">] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">); </span><span style="color: #FF8000">// int(2)<br /><br />// Seit PHP 8.1.0<br />// $a wird dadurch nicht mehr verändert. Das vorherige Verhalten verletzte die Semantik von by-value.<br /></span><span style="color: #0000BB">$globals </span><span style="color: #007700">= </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$globals</span><span style="color: #007700">[</span><span style="color: #DD0000">'a'</span><span style="color: #007700">] = </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Um das vorherige Verhalten wiederherzustellen, durchlaufen Sie die Kopie und übertragen jede Eigenschaft zurück auf $GLOBALS.<br /></span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$globals </span><span style="color: #007700">as </span><span style="color: #0000BB">$key </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$value</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$GLOBALS</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">] = </span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

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


</div><?php manual_footer($setup); ?>