svn: /phpdoc/de/trunk/language/ variables.xml

[email protected] (Christoph Michael Becker)
Newsgroups php.doc.de
Message-ID <[email protected]>
cmb                                      Sat, 21 Apr 2018 23:28:38 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=344799

Log:
Sync with EN

Changed paths:
    U   phpdoc/de/trunk/language/variables.xml
svn-diffs-344799.txt (text/x-diff, 40.8 KB)
Modified: phpdoc/de/trunk/language/variables.xml
===================================================================
--- phpdoc/de/trunk/language/variables.xml	2018-04-21 21:24:20 UTC (rev 344798)
+++ phpdoc/de/trunk/language/variables.xml	2018-04-21 23:28:38 UTC (rev 344799)
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: n/a Maintainer: hholzgra Status: ready -->
+<!-- EN-Revision: 342845 Maintainer: nobody Status: ready -->
 <!-- Credits: betz -->
+
  <chapter xml:id="language.variables" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
   <title>Variablen</title>

@@ -26,13 +27,13 @@
    <note>
     <simpara>
      Unserem Zweck entspricht also ein Buchstabe von a bis z bzw.
-     A bis Z oder einem ASCII-Zeichen von 127 bis 255 (0x7f bis 0xff).
+     A bis Z oder einem Bytewert von 127 bis 255 (<literal>0x7f-0xff</literal>).
     </simpara>
    </note>

    <note>
     <simpara>
-     <literal>$this</literal> ist eine spezielle Variable, die nicht gesetzt werden kann.
+     <literal>$this</literal> ist eine spezielle Variable, die nicht geändert werden kann.
     </simpara>
    </note>

@@ -49,11 +50,9 @@
      <programlisting role="php">
 <![CDATA[
 <?php
-$var = "Du";
-$vaR = "und";
+$var = "du";
 $Var = "ich";
-$vAr = "wir lernen PHP"
-echo "$var $vaR $Var, $vAr"; // gibt "Du und ich, wir lernen PHP" aus
+echo "$var, $Var"; // gibt "du, ich" aus

 $4site  = 'nicht jetzt';     // ungültig, da Anfang eine Zahl
 $_4site = 'nicht jetzt';     // gültig, da Unterstrich am Anfang
@@ -65,7 +64,7 @@
    </para>

    <para>
-    Variablen werden durch ihren Wert bestimmt. Das heißt,
+    Standardmäßig wird Variablen immer ein Wert zugewiesen. Das heißt,
     wenn Sie einer Variablen einen Ausdruck zuweisen, wird der gesamte
     Inhalt des Originalausdrucks in die Zielvariable kopiert. Die
     Folge ist, dass eine Variable, die ihren Inhalt von einer anderen
@@ -88,19 +87,20 @@
    </para>

    <para>
-    Für die Zuweisung per Referenz müssen Sie lediglich ein &amp;
+    Für die Zuweisung per Referenz müssen Sie lediglich ein Kaufmannsund (&amp;)
     der (Ausgangs-, Quell-) Variablen voranstellen, die
-    sie einer anderen Variablen zuweisen wollen. Der folgende Skript-
-    Ausschnitt wird zweimal 'Mein Name ist Bob' ausgeben:
+    sie einer anderen Variablen zuweisen wollen. Das folgende Code-
+    Schnipsel wird zweimal '<literal>Mein Name ist Bob</literal>' ausgeben:
+
     <informalexample>
      <programlisting role="php">
 <![CDATA[
 <?php
 $foo = 'Bob';             // 'Bob' der Variablen $foo zuweisen.
-$bar = &$foo;             // Zeiger auf $foo in $bar erzeugen.
+$bar = &$foo;             // $foo per $bar referenzieren.
 $bar = "Ich heiße $bar";  // $bar verändern...
 echo $bar;
-echo $foo;                // $foo wurde dadurch ebenfalls verändert.
+echo $foo;                // $foo wurde ebenfalls verändert.
 ?>
 ]]>
      </programlisting>
@@ -116,9 +116,10 @@
 <?php
 $foo = 25;
 $bar = &$foo;     // Gültige Zuweisung.
-$bar = &(24 * 7); // Ungültig, da kein Variablenbezeichner
-                  // zugewiesen wird.
-function test() {
+$bar = &(24 * 7); // Ungültig, da ein unbenannte Ausdruck referenziert wird.
+
+function test()
+{
     return 25;
 }

@@ -132,8 +133,10 @@
    <para>
     Es ist in PHP nicht zwingend notwendig Variablen zu initialisieren, es
     wird aber trotzdem empfohlen. Nicht initialisierte Variablen haben einen
-    Vorgabewert der vom Typ abhängt - &false; Null, leerer String oder leeres
-    Array.
+    Vorgabewert der vom Typ abhängt – Boolesche Werte sind standardmäßig &false;,
+    Ganz- und Fließkommazahlen sind standardmäßig Null (0), Zeichenketten (die z.B. in
+    <function>echo</function> verwendet werden) sind standardmäßig leer, und Arrays
+    ebenfalls.
    </para>
    <para>
     <example>
@@ -141,10 +144,33 @@
      <programlisting role="php">
 <![CDATA[
 <?php
-echo ($unset_bool ? "true" : "false"); // false
+// Nicht gesetzte UND nicht referenzierte (kein Verwendungskontext) Variable; gibt NULL aus
+var_dump($unset_var);
+
+// Verwendung als Boolescher Wert; gibt 'false' aus (siehe den ternären Operator für Details zu dieser Syntax)
+echo($unset_bool ? "true\n" : "false\n");
+
+// Verwendung als Zeichenkette; gibt 'string(3) "abc"' aus
+$unset_str .= 'abc';
+var_dump($unset_str);
+
+// Verwendung als Ganzzahl; gibt 'int(25)' aus
 $unset_int += 25; // 0 + 25 => 25
-echo $unset_string . "abc"; // "" . "abc" => "abc"
-$unset_array[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
+var_dump($unset_int);
+
+// Verwendung als Fließkommazahl; gibt 'float(1.25)' aus
+$unset_float += 1.25;
+var_dump($unset_float);
+
+// Verwendung als Array; gibt array(1) {  [3]=>  string(3) "def" } aus
+$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
+var_dump($unset_arr);
+
+// Verwendung als Objekt; erzeugt ein neues stdClass Objekt
+// (siehe http://www.php.net/manual/en/reserved.classes.php)
+// Gibt aus: object(stdClass)#1 (1) {  ["foo"]=>  string(3) "bar" }
+$unset_obj->foo = 'bar';
+var_dump($unset_obj);
 ?>
 ]]>
      </programlisting>
@@ -152,7 +178,7 @@
    </para>
    <para>
     Es ist problematisch sich auf den Vorgabewert einer nicht
-    initialisierten Variable zu verlassen wenn Sie Dateien inkludieren
+    initialisierten Variable zu verlassen, wenn Sie Dateien inkludieren
     die die gleichen Variablennamen benutzen.
     Wenn <link linkend="ini.register-globals">register_globals</link>
     aktiviert ist führt dies zu einem extremen <link
@@ -159,9 +185,9 @@
     linkend="security.globals">Sicherheitsproblem</link>.
     Bei Zugriffen auf nicht initialisierte Variablen wird ein
     Fehler der Stufe <link linkend="errorfunc.constants.errorlevels.e-notice">E_NOTICE</link>
-    ausgegeben, dies trifft allerdings nicht auf das Anfügen
+    ausgelöst, dies trifft allerdings nicht auf das Anfügen
     von Elementen an nicht initialisierte Arrays zu.
-    Das <function>isset</function> Sprachkonstrukt kann genutzt werden
+    Das <function>isset</function> Sprachkonstrukt kann genutzt werden,
     um zu prüfen ob eine Variable bereits initialisiert wurde.
    </para>
   </sect1>
@@ -168,6 +194,7 @@

   <sect1 xml:id="language.variables.predefined">
    <title>Vordefinierte Variablen</title>
+
    <simpara>
     PHP bietet jedem ausgeführtem Skript eine Vielzahl von
     vordefinierten Variablen an. Viele dieser Variablen können
@@ -182,19 +209,18 @@
    </simpara>
    <warning>
     <simpara>
-     Ab PHP 4.2.0 ist der standardmäßige Wert für die PHP-Anweisung
+     Ab PHP 4.2.0 ist der standardmäßige Wert für die PHP-Direktive
      <link linkend="ini.register-globals">register_globals</link>
      <emphasis>off</emphasis>. Dies ist eine wesentliche Änderung in
-     PHP. Die Anweisung register_globals <emphasis>off</emphasis>
+     PHP. Die Direktive register_globals <emphasis>off</emphasis>
      beeinflusst den Satz von vordefinierten Variablen, die im
-     globalen Bereich verfügbar sind. Um zum Beispiel
+     globalen Geltungsbereich verfügbar sind. Um zum Beispiel
      <varname>DOCUMENT_ROOT</varname> zu bekommen, müssen Sie
      <varname>$_SERVER['DOCUMENT_ROOT']</varname> statt
-     <varname>$DOCUMENT_ROOT</varname> verwenden oder um
-     <varname>$id</varname> von der URL
-     <literal>http://www.example.com/test.php?id=3</literal> zu
-     bekommen <varname>$_GET['id']</varname> statt
-     <varname>$id</varname> oder <varname>$_ENV['HOME']</varname>
+     <varname>$DOCUMENT_ROOT</varname> verwenden, oder
+     <varname>$_GET['id']</varname> von der URL
+     <literal>http://www.example.com/test.php?id=3</literal>
+     statt <varname>$id</varname> oder <varname>$_ENV['HOME']</varname>
      statt <varname>$HOME</varname>.
     </simpara>
     <simpara>
@@ -206,7 +232,7 @@
      Globals</link> und außerdem die PHP
      <link xlink:href="&url.php.release4.1.0;">4.1.0</link> und
      <link xlink:href="&url.php.release4.2.0;">4.2.0</link> Release
-     Announcements.
+     Ankündigungen.
     </simpara>
     <simpara>
      Die reservierten vordefinierten Variablen, wie die
@@ -214,14 +240,15 @@
      Arrays</link>, sollten bevorzugt verwendet werden.
     </simpara>
    </warning>
+
    <simpara>
     Ab Version 4.1.0 stehen in PHP eine zusätzliche Reihe
     vordefinierter Arrays zur Verfügung, die Variablen vom Webserver
     (gegebenenfalls), von der Umgebung und von Benutzereingaben
     enthalten. Diese neuen Arrays sind insofern etwas sehr Spezielles,
-    als sie automatisch global sind -- d.h., sie stehen automatisch in
-    jedem Bereich zur Verfügung. Deshalb sind sie auch bekannt als
-    'Superglobale'. (Es gibt in PHP keinen
+    als sie automatisch global sind – d.h., sie stehen automatisch in
+    jedem Geltungsbereich zur Verfügung. Deshalb sind sie auch bekannt als
+    "Superglobale". (Es gibt in PHP keinen
     Mechanismus für benutzerdefinierte Superglobale.) Die Superglobale
     werden nachfolgend aufgelistet, aber für eine Liste ihres Inhalts
     und die weitere Diskussion vordefinierter Variablen und ihres
@@ -233,11 +260,12 @@

     &avail.register-long-arrays;
    </simpara>
+
    <note>
     <title>Variable Variablen</title>
     <para>
      Superglobale können innerhalb von Funktionen und Methoden nicht als
-     <link linkend="language.variables.variable">Variable Variablen</link>
+     <link linkend="language.variables.variable">variable Variablen</link>
      verwendet werden.
     </para>
    </note>
@@ -244,8 +272,8 @@

    <note>
     <para>
-     Obwohl Superglobale und die HTTP_*_VARS zur gleichen Zeit existieren
-     können sind sie nicht identisch. Änderungen dieser Variablen haben
+     Obwohl Superglobale und die <literal>HTTP_*_VARS</literal> zur gleichen Zeit existieren
+     können, sind sie nicht identisch. Änderungen dieser Variablen haben
      keinen Einfluss auf die jeweils anderen.
     </para>
    </note>
@@ -261,6 +289,7 @@

   <sect1 xml:id="language.variables.scope">
    <title>Geltungsbereich von Variablen</title>
+
    <simpara>
     Der Geltungsbereich einer Variablen ergibt sich aus dem
     Zusammenhang, in dem sie definiert wurde. Meistens besteht
@@ -273,7 +302,7 @@
 <![CDATA[
 <?php
 $a = 1;
-include "b.inc";
+include 'b.inc';
 ?>
 ]]>
     </programlisting>
@@ -281,7 +310,7 @@
    <simpara>
     Die Variable $a ist auch in der eingebundenen Datei
     <filename>b.inc</filename> verfügbar. In benutzerdefinierten Funktionen
-    wird ein auf die Funktion beschränkter Geltungsbereich eingeführt. Jede in
+    wird jedoch ein auf die Funktion beschränkter Geltungsbereich eingeführt. Jede in
     einer Funktion benutzte Variable ist zunächst auf den lokalen Bereich
     der Funktion beschränkt, z.B.:
    </simpara>
@@ -289,10 +318,10 @@
     <programlisting role="php">
 <![CDATA[
 <?php
-$a = 1; // globaler Bereich
+$a = 1; // globaler Geltungsbereich

 function test () {
-    echo $a; // Referenz auf einen lokalen Variablen-Bereich
+    echo $a; // Referenz auf ein Variable im lokalen Geltungsbereich
 }

 test ();
@@ -303,16 +332,16 @@
    <simpara>
     Dieses Skript erzeugt keine Bildschirm-Ausgabe, da sich die Echo-
     Anweisung auf eine lokale Variable namens <varname>$a</varname>
-    bezieht und dieser kein Wert im lokalen Bezug zugewiesen worden ist.
+    bezieht, und dieser kein Wert im lokalen Geltungsbereich zugewiesen worden ist.
     Dies ist ein kleiner Unterschied zu C, wo globale Variablen auch in
     Funktionen vorhanden sind, es sei denn, sie werden durch eine
     funktionsinterne Definition überschrieben. Das kann zu Problemen führen,
-    denn in PHP müssen global geltende Variablen innerhalb von Funktionen als
-    solche definiert werden.
+    so dass in PHP global geltende Variablen innerhalb von Funktionen als
+    solche deklariert werden müssen.
    </simpara>

    <sect2 xml:id="language.variables.scope.global">
-    <title>Das global Schlüsselwort</title>
+    <title>Das <literal>global</literal> Schlüsselwort</title>
     <simpara>
      Zunächst ein Beispiel für die Verwendung von
      <literal>global</literal>:
@@ -319,7 +348,7 @@
     </simpara>
     <para>
      <example>
-      <title>Die Verwendung von global</title>
+      <title>Verwendung von <literal>global</literal></title>
       <programlisting role="php">
 <![CDATA[
 <?php
@@ -326,7 +355,7 @@
 $a = 1;
 $b = 2;

-function Summe()
+function Sum()
 {
     global $a, $b;

@@ -333,7 +362,7 @@
     $b = $a + $b;
 }

-Summe();
+Sum();
 echo $b;
 ?>
 ]]>
@@ -342,7 +371,7 @@
     </para>

    <simpara>
-    Das obige Skript gibt &quot;3&quot; aus. Durch das Deklararieren
+    Das obige Skript gibt <literal>3</literal> aus. Durch das Deklararieren
     der Variablen <varname>$a</varname> und <varname>$b</varname>innerhalb
     der Funktion als global, weisen alle Referenzen zu beiden Variablen auf
     die nun globalen Werte. Es gibt keine Beschränkungen bei der Anzahl an
@@ -355,9 +384,7 @@
    </simpara>
    <para>
     <example>
-     <title>
-      Die Verwendung von <varname>$GLOBALS</varname> statt global
-     </title>
+     <title>Verwendung von <varname>$GLOBALS</varname> statt global</title>
      <programlisting role="php">
 <![CDATA[
 <?php
@@ -364,12 +391,12 @@
 $a = 1;
 $b = 2;

-function Summe()
+function Sum()
 {
-    $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
+    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
 }

-Summe();
+Sum();
 echo $b;
 ?>
 ]]>
@@ -381,7 +408,7 @@
     Das <varname>$GLOBALS</varname>-Array ist ein assoziatives Array
     mit dem Bezeichner der globalen Variablen als Schlüssel und dem
     Inhalt dieser Variablen als Wert des Array-Elements. Beachten Sie,
-    dass <varname>$GLOBALS</varname> in jedem Bereich existiert, weil
+    dass <varname>$GLOBALS</varname> in jedem Geltungsbereich existiert, weil
     $GLOBALS eine <link
     linkend="language.variables.superglobals">Superglobale</link> ist.
     Hier ist ein Beispiel, das die Stärke von Superglobalen
@@ -389,9 +416,7 @@
    </simpara>
    <para>
     <example>
-     <title>
-      Beispiel zur Demonstration von Superglobalen und Bereich
-     </title>
+     <title>Beispiel zur Demonstration von Superglobalen und Geltungsbereich</title>
      <programlisting role="php">
 <![CDATA[
 <?php
@@ -414,23 +439,27 @@
      </programlisting>
     </example>
    </para>
+   <note>
+    <para>
+     Die Verwendung des <literal>global</literal>-Schlüsselworts außerhalb einer
+     Funktion ist kein Fehler. Es kann verwendet werden, wenn die Datei von innerhalb
+     einer Funktion eingebunden wird.
+    </para>
+   </note>
   </sect2>

   <sect2 xml:id="language.variables.scope.static">
-   <title>Die Verwendung von statischen Variablen</title>
+   <title>Die Verwendung von <literal>static</literal> Variablen</title>
    <simpara>
     Ein weiterer wichtiger Anwendungszweck von Variablen-Bereichen
-    ist die <emphasis>static</emphasis>-Variable. Eine statische
-    Variable existiert nur in einem lokalen Funktions-Bereich, der
+    ist die <emphasis>statische</emphasis>-Variable. Eine statische
+    Variable existiert nur in einem lokalen Funktions-Geltungsbereich, der
     Wert geht beim Verlassen dieses Bereichs aber nicht verloren.
     Schauen Sie das folgende Beispiel an:
    </simpara>
    <para>
     <example>
-     <title>
-      Beispiel, das die Notwendigkeit von statischen Variablen
-      demonstriert
-     </title>
+     <title>Beispiel, das die Notwendigkeit von statischen Variablen demonstriert</title>
      <programlisting role="php">
 <![CDATA[
 <?php
@@ -447,11 +476,11 @@
    </para>
    <simpara>
     Diese Funktion ist sinnlos, da sie bei jedem Aufruf <varname>$a</varname>
-    auf <literal>0</literal> setzt und &quot;0&quot; ausgibt. Die Anweisung
-    $a++, welche den Wert erhöht, ergibt hier keinen Sinn, da der Wert von
+    auf <literal>0</literal> setzt und <literal>0</literal> ausgibt. Die Anweisung
+    <varname>$a</varname>++, welche den Wert erhöht, ergibt hier keinen Sinn, da der Wert von
     <varname>$a</varname> beim Verlassen der Funktion verloren geht. Um eine
     sinnvolle Zählfunktion zu implementieren, die ihren aktuell gesetzten Wert
-    nicht vergisst, müssen Sie die Variable <varname>$a</varname>als "static"
+    nicht vergisst, müssen Sie die Variable <varname>$a</varname> als statisch
     deklarieren:
    </simpara>
    <para>
@@ -460,7 +489,7 @@
      <programlisting role="php">
 <![CDATA[
 <?php
-function Test()
+function test()
 {
     static $a = 0;
     echo $a;
@@ -472,17 +501,19 @@
     </example>
    </para>
    <simpara>
-    Jetzt wird bei jedem Aufruf der Test()-Funktion der aktuelle
-    Wert von <varname>$a</varname> ausgegeben und dann um 1 erhöht.
+    Nun wird <varname>$a</varname> nur beim ersten Aufruf der Funktion initialisiert,
+    und jedes mal wenn die <literal>test()</literal>-Funktion aufgerufen wird, wird
+    sie den Wert von <varname>$a</varname> ausgeben, und den Variablenwert erhöhen.
    </simpara>
+
    <simpara>
-    Static-Variablen ermöglichen auch einen Weg zum Umgang mit
+    Statische Variablen ermöglichen auch einen Weg zum Umgang mit
     rekursiven Funktionen. Das sind Funktionen, die sich selbst
     aufrufen. Hierbei besteht die Gefahr, so genannte Endlos-
     Schleifen zu programmieren. Sie müssen also einen Weg vorsehen,
     diese Rekursion zu beenden. Die folgende einfache Funktion zählt
     rekursiv bis 10. Die statische Variable
-    <varname>$zaehler</varname> wird benutzt, um die Rekursion zu
+    <varname>$count</varname> wird benutzt, um die Rekursion zu
     beenden:
    </simpara>
    <para>
@@ -491,16 +522,16 @@
      <programlisting role="php">
 <![CDATA[
 <?php
-function Test()
+function test()
 {
-    static $zaehler = 0;
+    static $count = 0;

-    $zaehler++;
-    echo $zaehler;
-    if ($zaehler < 10) {
-        Test ();
+    $count++;
+    echo $count;
+    if ($count < 10) {
+        test();
     }
-    $zaehler--;
+    $count--;
 }
 ?>
 ]]>
@@ -509,9 +540,10 @@
    </para>
    <note>
     <para>
-      Statische Variablen werden wie in oben stehenden Beispielen deklariert.
-      Das Zuweisen eines Wertes, welcher das Ergebnis eines Ausdrucks ist,
-      wird mit einem parse error quittiert.
+     Statische Variablen werden wie in oben stehenden Beispielen deklariert.
+     Von PHP 5.6 an ist es möglich diesen Variablen Werte zuzuweisen, die das Ergebnis
+     von Ausdrücken sind, aber es dürfen hier keine Funktion verwendet werden,
+     was einen Parse-Fehler auslöst.
     </para>
     <para>
      <example>
@@ -521,8 +553,8 @@
 <?php
 function foo(){
     static $int = 0;          // korrekt
-    static $int = 1+2;        // falsch  (da ein Ausdruck vorliegt)
-    static $int = sqrt(121);  // falsch  (ebenfalls ein Ausdruck)
+    static $int = 1+2;        // korrekt (von PHP 5.6 an)
+    static $int = sqrt(121);  // falsch (da es eine Funktion ist)

     $int++;
     echo $int;
@@ -533,20 +565,25 @@
     </example>
    </para>
   </note>
+   <note>
+    <para>
+     Statische Deklarationen werden zur Übersetzungszeit aufgelöst.
+    </para>
+   </note>
   </sect2>

   <sect2 xml:id="language.variables.scope.references">
-   <title>Referenzen bei globalen und statischen Variablen</title>
+   <title>Referenzen bei <literal>global</literal> und <literal>static</literal> Variablen</title>
    <simpara>
     Die Zend Engine 1, die PHP 4 zugrunde liegt,
-    führt die <link
+    implementiert die <link
     linkend="language.variables.scope.static">static</link>- und
     <link
-    linkend="language.variables.scope.global">global</link>-Wandler
-    für Variablen in Bezug auf <link
-    linkend="language.references">Referenzen</link> aus. Zum Beispiel
+    linkend="language.variables.scope.global">global</link>-Modifikatoren
+    für Variablen als <link
+    linkend="language.references">Referenzen</link>. Zum Beispiel
     erzeugt eine echte globale Variable, die mit der Anweisung
-    <literal>global</literal> in den Funktionsbereich importiert
+    <literal>global</literal> in den Funktions-Geltungsbereich importiert
     wurde, tatsächlich eine Referenz zur globalen Variable. Das kann
     zu einem unerwarteten Verhalten führen, auf das im folgenden
     Beispiel eingegangen wird:
@@ -573,19 +610,21 @@
 ]]>
     </programlisting>
    </informalexample>
-   <simpara>
-    Die Ausführung dieses Beispiels erzeugt die folgende Ausgabe:
-   </simpara>
+
+   &example.outputs;
+
    <screen>
 NULL
 object(stdClass)(0) {
 }
    </screen>
+
    <simpara>
     Ein ähnliches Verhalten gilt auch für die Anweisung
     <literal>static</literal>. Referenzen werden nicht statisch
     gespeichert:
    </simpara>
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -595,11 +634,11 @@

     echo "Statisches Objekt: ";
     var_dump($obj);
-   if (!isset($obj)) {
+    if (!isset($obj)) {
         // Der statischen Variablen eine Referenz zuweisen
         $obj = &new stdclass;
     }
-    $obj->eigenschaft++;
+    $obj->property++;
     return $obj;
 }

@@ -612,22 +651,20 @@
         // Der statischen Variablen ein Objekt zuweisen
         $obj = new stdclass;
     }
-    $obj->eigenschaft++;
+    $obj->property++;
     return $obj;
 }

 $obj1 = get_instance_ref();
-$immer_noch_obj1 = get_instance_ref();
+$still_obj1 = get_instance_ref();
 echo "\n";
 $obj2 = get_instance_noref();
-$immer_noch_obj2 = get_instance_noref();
+$still_obj2 = get_instance_noref();
 ?>
 ]]>
     </programlisting>
    </informalexample>
-   <simpara>
-    Die Ausführung dieses Beispiels erzeugt die folgende Ausgabe:
-   </simpara>
+   &example.outputs;
    <screen>
 Statisches Objekt: NULL
 Statisches Objekt: NULL
@@ -634,10 +671,11 @@

 Statisches Objekt: NULL
 Statisches Objekt: object(stdClass)(1) {
-  ["eigenschaft"]=>
+  ["property"]=>
   int(1)
 }
    </screen>
+
    <simpara>
     Dieses Beispiel demonstriert, dass die Referenz, die einer
     statischen Variablen zugewiesen wird, beim zweiten Aufruf der
@@ -648,12 +686,14 @@

   <sect1 xml:id="language.variables.variable">
    <title>Variable Variablen</title>
+
    <simpara>
     Manchmal ist es komfortabel, variable Variablen-Bezeichner zu
     benutzen. Das bedeutet, einen Variablen-Namen zu setzen und
     dynamisch zu gebrauchen. Eine normale Variable wird wie folgt
-    gebildet:
+    festgelegt:
    </simpara>
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -663,12 +703,14 @@
 ]]>
     </programlisting>
    </informalexample>
+
    <simpara>
     Eine variable Variable nimmt den Wert einer Variablen und
     behandelt ihn als Bezeichner der Variablen. Im obigen Beispiel
     kann <emphasis>Hallo</emphasis> als Variablen-Name gebraucht
-    werden, indem man zwei $-Zeichen benutzt, also schreibt:
+    werden, indem man zwei Dollar-Zeichen benutzt, also schreibt:
    </simpara>
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -678,6 +720,7 @@
 ]]>
     </programlisting>
    </informalexample>
+
    <simpara>
     Nun existieren in der PHP-Symbol-Struktur zwei definierte und
     gespeicherte Variablen: <varname>$a</varname> mit dem Inhalt "Hallo"
@@ -684,6 +727,7 @@
     und <varname>$Hallo</varname> mit dem Inhalt "Welt". Deshalb wird die
     Anweisung
    </simpara>
+
    <informalexample>
     <programlisting role="php">
 <![CDATA[
@@ -693,9 +737,11 @@
 ]]>
     </programlisting>
    </informalexample>
+
    <simpara>
     zur genau gleichen Ausgabe führen wie:
    </simpara>
+
    <informalexample>
     <programlisting>
 <![CDATA[
@@ -705,9 +751,11 @@
 ]]>
     </programlisting>
    </informalexample>
+
    <simpara>
     also zu: <computeroutput>Hallo Welt</computeroutput>.
    </simpara>
+
    <simpara>
     Wenn Sie variable Variablen mit Arrays verwenden, müssen Sie eine
     Doppeldeutigkeit beachten. Wenn Sie nämlich
@@ -719,11 +767,79 @@
     <varname>${$a[1]}</varname> und im zweiten Fall
     <varname>${$a}[1]</varname>.
    </simpara>
+
+   <simpara>
+    Auf Klasseneigenschaften kann ebenso unter Verwendung von variablen Eigenschaftsnamen
+    zugegriffen werden. Der variable Eigenschaftsname wird innerhalb des Geltungsbereichs
+    aufgelöst, aus dem der Aufruf erfolgt. Wenn sie beispielsweise einen Ausdruck
+    wie etwa <varname>$foo->$bar</varname> haben, dann wird der lokale Geltungsbereich
+    auf <varname>$bar</varname> untersucht, und dessen Wert wird als Eigenschaftsname
+    von <varname>$foo</varname> verwendet. Dies gilt analog, wenn <varname>$bar</varname>
+    ein Arrayzugriff ist.
+   </simpara>
+
+   <caution>
+    <simpara>
+     Weiterhin hat das Dereferenzieren einer variablen Eigenschaft, die ein Array
+     ist, unterschiedliche Bedeutung in PHP 5 und PHP 7. Die
+     <link linkend="migration70.incompatible.variable-handling.indirect">PHP 7.0 Migrationsanleitung</link>
+     enthält weitere Details zu den Arten von Ausdrücken, die sich geändert haben,
+     und wie geschweifte Klammern zu platzieren sind, um Mehrdeutigkeit zu vermeiden.
+    </simpara>
+   </caution>
+
+   <simpara>
+    Geschweifte Klammern können ebenfalls verwendet werden, um den Eigenschaftsnamen
+    deutlich abzugrenzen. Sie sind besonders nützlich beim Zugriff auf Werte in einer
+    Eigenschaft, die ein Array enthält, wenn der Eigenschaftsname aus mehreren Teilen
+    besteht, oder wenn der Eigenschaftsname Zeichen enthält, die andernfalls nicht
+    gültig sind (z.B. von <function>json_decode</function> oder
+    <link linkend="book.simplexml">SimpleXML</link>).
+   </simpara>
+
+   <para>
+    <example>
+     <title>Beispiel zu variablen Eigenschaften</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+class foo {
+    var $bar = 'Ich bin bar.';
+    var $arr = array('Ich bin A.', 'Ich bin B.', 'Ich bin C.');
+    var $r   = 'Ich bin r.';
+}
+
+$foo = new foo();
+$bar = 'bar';
+$baz = array('foo', 'bar', 'baz', 'quux');
+echo $foo->$bar . "\n";
+echo $foo->{$baz[1]} . "\n";
+
+$start = 'b';
+$end   = 'ar';
+echo $foo->{$start . $end} . "\n";
+
+$arr = 'arr';
+echo $foo->{$arr[1]} . "\n";
+
+?>
+]]>
+     </programlisting>
+     &example.outputs;
+     <screen>
+Ich bin bar.
+Ich bin bar.
+Ich bin bar.
+Ich bin r.
+     </screen>
+    </example>
+   </para>
+
    <warning>
     <simpara>
-     Bitte beachten Sie, dass variable Variablen nicht bei <link
+     Bitte beachten Sie, dass variable Variablen nicht mit <link
      linkend="language.variables.superglobals">Superglobalen
-     Arrays</link> verwendet werden können.
+     Arrays</link> in Funktionen oder Klassenmethoden verwendet werden können.
      Die Variable <literal>$this</literal> ist ebenfalls eine
      spezielle Variable, die nicht dynamisch referenziert
      werden kann.
@@ -737,10 +853,11 @@

    <sect2 xml:id="language.variables.external.form">
     <title>HTML-Formulare (GET and POST)</title>
+
     <simpara>
      Sobald ein Formular an ein PHP-Skript übergeben wird, werden die
-     Informationen dieses Formulars dem Skript automatisch verfügbar
-     gemacht. Es gibt viele Möglichkeiten, auf diese Informationen
+     Informationen dieses Formulars dem Skript automatisch zur Verfügung
+     gestellt. Es gibt ein paar Möglichkeiten, auf diese Informationen
      zuzugreifen, zum Beispiel:
     </simpara>

@@ -751,7 +868,7 @@
 <![CDATA[
 <form action="foo.php" method="post">
     Name:  <input type="text" name="username" /><br />
-    Email: <input type="text" name="email" /><br />
+    E-Mail: <input type="text" name="email" /><br />
     <input type="submit" name="submit" value="Und ab!" />
 </form>
 ]]>
@@ -760,95 +877,78 @@
     </para>

     <para>
-     Abhängig von Ihrem speziellen Setup und Ihren persönlichen
-     Vorlieben gibt es viele Möglichkeiten, auf die Daten von Ihren
-     HTML-Formularen zuzugreifen. Hier einige Beispiele:
+     Von PHP 5.4.0 an gibt es nur zwei Möglichkeiten, um auf die Daten der HTML-Formulare
+     zuzugreifen. Die zurzeit verfügbaren Methoden werden unten aufgeführt:
     </para>

     <para>
      <example>
-      <title>
-       Zugriff auf die Daten von einem einfachen POST HTML-Formular
-      </title>
+      <title>Zugriff auf die Daten eines einfachen POST-HTML-Formular</title>
       <programlisting role="html">
 <![CDATA[
 <?php
-// Seit PHP 4.1.0 verfügbar
+echo $_POST['username'];
+echo $_REQUEST['username'];
+?>
+]]>
+     </programlisting>
+    </example>
+   </para>

-   echo $_POST['benutzername'];
-   echo $_REQUEST['benutzername'];
+    <para>
+     Es gab einige weitere Möglichkeiten, um auf Nutzereingaben in alten PHP-Versionen
+     zuzugreifen. Diese werden unten aufgeführt. Weitere Details sind dem Changelog
+     am Ende der Seite zu entnehmen.
+     <example>
+      <title>Alte Methoden zum Zugriff auf Nutzereingaben</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+// OBACHT: diese Methoden WERDEN NICHT mehr unterstützt.
+// Gültige Methoden werden weiter oben beschrieben.

+// Verwendung von import_request_variables() - diese Funktion wurde in PHP 5.4.0 entfernt
    import_request_variables('p', 'p_');
-   echo $p_benutzername;
+   echo $p_username;

-// Ab PHP 6.0.0 nicht mehr verfügbar. Ab PHP 5.0.0 können diese langen
-// vordefinierten Variablen mit der Anweisung register_long_arrays
-// deaktiviert werden.
+// Diese langen vordefinierten Variablen wurden in PHP 5.4.0 entfernt
+   echo $HTTP_POST_VARS['username'];

-   echo $HTTP_POST_VARS['benutzername'];
-
-// Verfügbar, falls die PHP-Anweisung register_globals = on. Ab
-// PHP 4.2.0 ist der standardmäßige Wert von register_globals = off.
-// Es ist nicht empfehlenswert, diese Methode zu verwenden, bzw. sich
-// darauf zu verlassen.
-
-   echo $benutzername;
+// Verwendung von register_globals. Dieses Feature wurde in PHP 5.4.0 entfernt
+   echo $username;
 ?>
 ]]>
-     </programlisting>
-    </example>
-   </para>
+      </programlisting>
+     </example>
+    </para>
+
    <para>
     Die Verwendung eines GET Formulars ist, davon abgesehen, dass Sie
     stattdessen die entsprechende vordefinierte GET-Variable erhalten,
-    ähnlich. Außerdem wird GET auch für den QUERY_STRING (die
+    ähnlich. Außerdem wird GET auch für den <literal>QUERY_STRING</literal> (die
     Information nach dem '?' in einer URL) verwendet. So enthält zum
     Beispiel <literal>http://www.example.com/test.php?id=3</literal>
     GET-Daten, auf die mit <varname>$_GET['id']</varname> zugegriffen
-    werden kann. Siehe auch <link
-    linkend="reserved.variables.request">$_REQUEST</link> und
-    <function>import_request_variables</function>.
+    werden kann. Siehe auch <varname>$_REQUEST</varname>.
    </para>

-   <note>
-    <para>
-     <link linkend="language.variables.superglobals">Superglobale
-     Arrays</link> wie <varname>$_POST</varname> und
-     <varname>$_GET</varname> stehen seit PHP 4.1.0 zur Verfügung.
-    </para>
-   </note>
+    <note>
+     <para>
+      Punkte und Leerzeichen in Variablennamen werden in Unterstriche umgewandelt.
+      Zum Beispiel wird <literal>&lt;input name="a.b" /&gt;</literal> zu
+      <literal>$_REQUEST["a_b"]</literal>.
+     </para>
+    </note>

-   <para>
-    Wie gezeigt, war <link
-    linkend="ini.register-globals">register_globals</link> vor PHP
-    4.2.0 standardmäßig <emphasis>on</emphasis>.
-    Die PHP-Gemeinschaft ermuntert alle, sich nicht auf
-    diese Anweisung zu stützen, weil es vorzuziehen ist, davon
-    auszugehen, dass sie <emphasis>off</emphasis> ist und entsprechend
-    zu programmieren.
-   </para>
-
-   <note>
-    <para>
-     Die Konfigurationseinstellung zu <link
-     linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> betrifft
-     Get-, Post- und Cookie-Werte. Ist diese Einstellung aktiv, wird
-     der Wert (It's "PHP!") automatisch zu (It\'s \"PHP!\"). Escaping
-     ist notwendig, wenn Sie ihre Daten in eine Datenbank einfügen
-     wollen. Siehe auch <function>addslashes</function>,
-     <function>stripslashes</function> und <link
-     linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>.
-    </para>
-   </note>
-
    <simpara>
     Im Zusammenhang mit Formular-Variablen versteht PHP auch
     Arrays (siehe auch die <link linkend="faq.html">verwandte Faq</link>).
     Sie können z.B. die betreffenden Variablen gruppieren oder dieses
-    Leistungsmerkmal nutzen, um Werte aus Mehrfach-Auswahl-Bereichen
-    zu erhalten. Schicken wir zum Beispiel ein Formular an sich selbst
-    und lassen nach dem Abschicken die Daten anzeigen:
+    Leistungsmerkmal nutzen, um Werte aus Mehrfach-Auswahl-Eingabeelementen
+    zu erhalten. Schicken wir zum Beispiel ein Formular an sich selbst,
+    und lassen nach dem Versand die Daten anzeigen:
    </simpara>
+
    <para>
     <example>
      <title>Komplexere Formular-Variablen</title>
@@ -863,11 +963,11 @@
 ?>
 <form action="" method="post">
     Name:  <input type="text" name="personal[name]" /><br />
-    Email: <input type="text" name="personal[email]" /><br />
+    E-Mail: <input type="text" name="personal[email]" /><br />
     Bier: <br />
     <select multiple name="bier[]">
-        <option value="warthog">Warthog</option>
-        <option value="guinness">Guinness</option>
+        <option value="warthog">Öttinger</option>
+        <option value="guinness">Bitburger</option>
         <option value="stuttgarter">Stuttgarter Schwabenbräu</option>
     </select><br />
     <input type="submit" name="submit" value="Und ab!" />
@@ -879,11 +979,13 @@

     <sect3 xml:id="language.variables.external.form.submit">
      <title>IMAGE SUBMIT Variablen-Bezeichner</title>
+
      <simpara>
-      Zur Übertragung eines Formulars kann auch ein Bild (Image)
+      Zur Übertragung eines Formulars kann auch ein Bild
       statt eines Übertragungs-Schalters (Submit-Button) benutzt
       werden, dessen Tag wie folgt aussieht:
      </simpara>
+
      <informalexample>
       <programlisting role="html">
 <![CDATA[
@@ -891,13 +993,14 @@
 ]]>
       </programlisting>
      </informalexample>
+
      <simpara>
       Klickt der Benutzer irgendwo auf das Bild, wird das
       entsprechende Formular an den Web-Server übertragen. Hierbei
-      sind zwei zusätzliche Variablen vorhanden, sub_x und sub_y.
+      sind zwei zusätzliche Variablen vorhanden, <varname>sub_x</varname> und <varname>sub_y</varname>.
       Diese enthalten die Koordinaten des Klick-Punktes innerhalb des
-      Bildes. Die Erfahreneren werden sagen, dass die Variablen, die
-      vom Browser gesendet werden einen Punkt enthalten statt eines
+      Bildes. Die Erfahreneren werden bemerken, dass die Variablen, die
+      vom Browser gesendet werden, einen Punkt enthalten statt eines
       Unterstrichs. Dieser Punkt wird von PHP automatisch in einen
       Unterstrich verwandelt.
      </simpara>
@@ -908,10 +1011,10 @@
    <sect2 xml:id="language.variables.external.cookies">
     <title>HTTP-Cookies</title>
     <simpara>
-     PHP unterstützt HTTP-Cookies, wie sie in <!-- Removed link to fix the build ~sobak 12/06/2016 -->
-     Netscape's Spec definiert sind.
+     PHP unterstützt HTTP-Cookies, wie in
+     <link xlink:href="&url.rfc;6265">RFC 6265</link> definiert.
      Cookies ermöglichen die Daten-Speicherung innerhalb der
-     jeweiligen Browser-Umgebung zur Weiterleitung oder wiederholten
+     jeweiligen Browser-Umgebung zum Tracken oder zur
      Identifikation von Benutzern. Sie können Cookies erzeugen, indem
      Sie die Funktion <function>setcookie</function> benutzen. Cookies
      sind Teil des HTTP-Headers, deshalb muss die setcookie-Funktion
@@ -919,23 +1022,23 @@
      gesendet wird. Dabei handelt es sich um die gleiche
      Einschränkung, die auch für die
      <function>header</function>-Funktion gilt. Cookie-Daten stehen
-     dann sowohl in den entsprechenden Cookie-Daten-Arrays, wie zum
-     Beispiel <varname>$_COOKIE</varname>,
-     <varname>$HTTP_COOKIE_VARS</varname> als auch in
+     dann in den entsprechenden Cookie-Daten-Arrays, wie zum
+     Beispiel <varname>$_COOKIE</varname>, als auch in
      <varname>$_REQUEST</varname> zur Verfügung. Für weitere Details
      und Beispiele lesen Sie bitte die
      <function>setcookie</function>-Seite des Handbuchs.
     </simpara>
+
     <simpara>
      Wenn Sie einer einzelnen Cookie-Variable mehrere Werte zuweisen
-     wollen, müssen Sie diese als Array übertragen. Zum Beispiel:
+     wollen, müssen Sie diese als Array zuweisen. Zum Beispiel:
     </simpara>
     <informalexample>
      <programlisting role="php">
 <![CDATA[
 <?php
-setcookie("MeinCookie[foo]", "Ich teste 1", time()+3600);
-setcookie("MeinCookie[bar]", "Ich teste 2", time()+3600);
+  setcookie("MeinCookie[foo]", "Ich teste 1", time()+3600);
+  setcookie("MeinCookie[bar]", "Ich teste 2", time()+3600);
 ?>
 ]]>
      </programlisting>
@@ -942,11 +1045,11 @@
     </informalexample>

     <simpara>
-     Das erzeugt zwei einzelne Cookies obwohl MeinCookie in Ihrem
+     Das erzeugt zwei einzelne Cookies obwohl <varname>MyCookie</varname> in Ihrem
      Skript nun ein einziges Array ist. Wenn Sie nur ein Cookie mit
-     mehreren Werten setzen wollen, sollten Sie zuerst
+     mehreren Werten setzen wollen, sollten Sie erwägen
      <function>serialize</function> oder <function>explode</function>
-     auf das Array anwenden.
+     auf das Array anzuwenden.
     </simpara>

     <simpara>
@@ -955,6 +1058,7 @@
      die Domain ist anders. Für eine Warenkorb-Anwendung können
      Sie deshalb z.B. einen Zähler bilden und diesen weiterleiten:
     </simpara>
+
     <example>
      <title>Ein <function>setcookie</function>-Beispiel</title>
      <programlisting role="php">
@@ -961,20 +1065,21 @@
 <![CDATA[
 <?php
 if (isset($_COOKIE['zaehler'])) {
-    $zaehler = $_COOKIE['zaehler'] + 1;
+    $count = $_COOKIE['zaehler'] + 1;
 } else {
-    $zaehler = 1;
+    $count = 1;
 }
-setcookie("zaehler", $zaehler, time()+3600);
-setcookie("Cart[$zaehler]", $item, time()+3600);
+setcookie('zaehler', $count, time()+3600);
+setcookie("Cart[$count]", $item, time()+3600);
 ?>
 ]]>
      </programlisting>
     </example>
+
    </sect2>

    <sect2 xml:id="language.variables.external.dot-in-names">
-    <title>Punkte in eingelesenen Variablen-Bezeichnern</title>
+    <title>Punkte in eingehenden Variablen-Bezeichnern</title>
     <para>
      Normalerweise verändert PHP die Variablen-Bezeichner nicht,
      wenn sie einem Skript übergeben werden. Es sollte aber beachtet
@@ -988,12 +1093,13 @@
 ]]>
      </programlisting>
      Der PHP-Parser sieht eine Variable namens <varname>$varname</varname>,
-     gefolgt von einem Zeichenketten-Verbindungs-Operator, dieser wiederrum
+     gefolgt von einem Zeichenketten-Verbindungs-Operator, dieser wiederum
      gefolgt von der offenen Zeichenkette 'ext' (also nicht eingegrenzt
-     durch '"' und auch keinem Schlüssel oder reserviertem Bezeichner
+     durch '"' und auch keinem Schlüsselwort oder reserviertem Bezeichner
      entsprechend). Das kann natürlich nicht zum gewünschten Ergebnis
      führen.
     </para>
+
     <para>
      Deshalb ist es wichtig zu wissen, dass PHP in den ihm übergebenen
      Variablen alle Punkte (.) automatisch durch einen
@@ -1003,6 +1109,7 @@

    <sect2  xml:id="language.variables.determining-type-of">
     <title>Bestimmung des Variablen-Typs</title>
+
     <para>
      Da PHP den Typ der Variablen bestimmt und (im Allgemeinen) selbst
      eine entsprechende Umformung vornimmt, ist es nicht immer klar,
@@ -1014,8 +1121,21 @@
      <function>is_string</function>. Lesen Sie bitte auch das Kapitel
      über <link linkend="language.types">Typen</link>.
     </para>
+    <para>
+     Da HTTP ein Text-Protokoll ist, werden die meisten, wenn nicht alle, Inhalte von
+     <link linkend="language.variables.superglobals">superglobalen Arrays</link>,
+     wie <varname>$_POST</varname> und <varname>$_GET</varname>, als Zeichenketten
+     erhalten bleiben. PHP wird nicht versuchen die Werte in spezifische Typen umzuwandeln.
+     Im Beispiel weiter unten wird <varname>$_GET["var1"]</varname> die Zeichenkette
+     "null" und <varname>$_GET["var2"]</varname> die Zeichenkette "123" enthalten.
+     <programlisting>
+<![CDATA[
+/index.php?var1=null&var2=123
+]]>
+     </programlisting>
+    </para>
    </sect2>
-
+
      <sect2 xml:id="language.variables.external.changelog">
     &reftitle.changelog;

@@ -1044,7 +1164,7 @@
           <link linkend="security.globals">Globals registrieren</link>,
           <link linkend="security.magicquotes">Magic Quotes</link> and
           <link linkend="ini.register-long-arrays">register_long_arrays</link>
-          wurde als veraltet markiert
+          wurde missbilligt
          </entry>
         </row>
         <row>
@@ -1051,7 +1171,7 @@
          <entry>4.2.0</entry>
          <entry>
           <link linkend="ini.register-globals">register_globals</link>
-          Anweisung ist standardmässig <emphasis>off</emphasis>.
+          Direktive ist standardmässig <emphasis>off</emphasis>.
          </entry>
         </row>
         <row>
@@ -1059,7 +1179,7 @@
          <entry>
           <link linkend="language.variables.superglobals">Superglobale Arrays</link>,
           wie <varname>$_POST</varname> oder <varname>$_GET</varname> wurden
-          verfügbar.
+          verfügbar gemacht
          </entry>
         </row>
        </tbody>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.