jan Wed Dec 12 16:32:14 2001 EDT
Modified files:
/phpdoc/de/language references.xml
Log:
updated translatein (& with new) and fixed CDATA sections
Index: phpdoc/de/language/references.xml
diff -u phpdoc/de/language/references.xml:1.10 phpdoc/de/language/references.xml:1.11
--- phpdoc/de/language/references.xml:1.10 Wed Dec 12 15:46:23 2001
+++ phpdoc/de/language/references.xml Wed Dec 12 16:32:14 2001
@@ -28,7 +28,9 @@
<informalexample>
<programlisting role="php">
+<![CDATA[
$a =& $b
+]]>
</programlisting>
</informalexample>
@@ -43,18 +45,44 @@
</note>
</para>
<para>
+ Seit PHP 4.0.4 kann <literal>&</literal> auch in Verbindung mit
+ <literal>new</literal> verwendet werden.
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+$bar =& new fooclass();
+$foo =& find_var ($bar);
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <note>
+ <para>
+ Wenn der <literal>&</literal> Operator nicht verwendet wird, erzeugt
+ PHP eine Kopie des Objekts. Wenn nun <literal>$this</literal> innerhalb
+ der Klasse verwendet wird, bezieht es sich auf die aktuelle Instanz der
+ Klasse. Die Zuordnung ohne <literal>&</literal> erzeugt eine Kopie der
+ Instanz (d.h. des Objekts) und <literal>$this</literal> wird sich auf
+ die Kopie beziehen. In der Regel will man aus Performance- und
+ Speicherverbrausgründen nur eine einzige Instanz einer Klasse
+ erzeugen. Dafür stellt PHP den <literal>&</literal> bereit.
+ </para>
+ </note>
+
Eine weitere Einsatzmöglichkeit von Referenzen ist die Übergabe
von Parametern an eine Funktion mit pass-by-reference. Hierbei
beziehen sich der lokale Variablenname als auch der Variablenname
der aufrufenden Instanz auf denselben Variableninhalt:
<informalexample>
<programlisting role="php">
+<![CDATA[
function foo (&$var) {
$var++;
}
$a=5;
foo ($a);
+]]>
</programlisting>
</informalexample>
Nach der Ausführung hat <varname>$a</varname> den Wert 6, da sich
@@ -77,10 +105,12 @@
erwarten würde:
<informalexample>
<programlisting role="php">
+<![CDATA[
function foo (&$var) {
$var =& $GLOBALS["baz"];
}
foo($bar);
+]]>
</programlisting>
</informalexample>
</para>
@@ -106,6 +136,7 @@
Syntax zu beachten:
<informalexample>
<programlisting role="php">
+<![CDATA[
function &find_var ($param) {
...code...
return $found_var;
@@ -113,6 +144,7 @@
$foo =& find_var ($bar);
$foo->x = 2;
+]]>
</programlisting>
</informalexample>
In diesem Beispiel wird also die Eigenschaft des von
@@ -137,9 +169,11 @@
wird hierbei nicht gelöscht. Betrachten wir folgendes Beispiel:
<informalexample>
<programlisting role="php">
+<![CDATA[
$a = 1;
$b =& $a;
unset ($a);
+]]>
</programlisting>
</informalexample>
Die Variable <varname>$b</varname> wird nicht gelöscht, sondern es
@@ -170,7 +204,9 @@
sie ist also äquivalent zu folgendem:
<informalexample>
<programlisting role="php">
+<![CDATA[
$var =& $GLOBALS["var"];
+]]>
</programlisting>
</informalexample>
</para>