Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cd817ee

Browse files
committed
review
1 parent f7f9cdf commit cd817ee

2 files changed

Lines changed: 93 additions & 86 deletions

File tree

language/references.xml

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: fe18943c11c6fe9be88688574153013ff249452d Maintainer: nobody Status: wip -->
3+
<!-- EN-Revision: fe18943c11c6fe9be88688574153013ff249452d Maintainer: nobody Status: ready -->
4+
<!-- Reviewed: yes -->
5+
<!-- Rev-Revision: 1.0 Reviewer: samesch -->
46
<chapter xml:id="language.references" xmlns="http://docbook.org/ns/docbook">
5-
<title>Referenzen in PHP</title>
7+
<title>Referenzen</title>
68

79
<sect1 xml:id="language.references.whatare">
810
<title>Was Referenzen sind</title>
911
<simpara>
10-
Referenzen sind in PHP ein Mechanismus um verschiedene Namen für den
12+
Referenzen sind in PHP ein Mechanismus, um verschiedene Namen für den
1113
gleichen Inhalt von Variablen zu ermöglichen. Sie sind nicht mit Zeigern
1214
in C zu vergleichen; zum Beispiel ist damit keine Zeigerarithmetik
1315
möglich, sie sind keine tatsächlichen Speicheradressen usw. Siehe
1416
<xref linkend="language.references.arent" /> für weitere Informationen.
15-
Statt dessen sind sie Aliasdefinitionen für die Symboltabelle. PHP
17+
Stattdessen sind sie Aliasdefinitionen für die Symboltabelle. PHP
1618
unterscheidet zwischen Variablenname und Variableninhalt, wobei der
1719
gleiche Variableninhalt unterschiedliche Namen besitzen kann. Der
1820
bestmögliche Vergleich ist der mit Dateinamen und Dateien im Dateisystem
@@ -41,7 +43,7 @@
4143
<programlisting role="php">
4244
<![CDATA[
4345
<?php
44-
$a =& $b
46+
$a =& $b;
4547
?>
4648
]]>
4749
</programlisting>
@@ -51,9 +53,9 @@ $a =& $b
5153
<note>
5254
<para>
5355
<varname>$a</varname> und <varname>$b</varname> sind hier gleichwertig,
54-
und <varname>$a</varname> ist nicht nur ein Zeiger auf
55-
<varname>$b</varname> oder umgekehrt, sondern <varname>$a</varname> und
56-
<varname>$b</varname> zeigen auf denselben Platz.
56+
und <varname>$a</varname> ist kein Zeiger auf <varname>$b</varname>
57+
oder umgekehrt, sondern <varname>$a</varname> und <varname>$b</varname>
58+
zeigen auf dieselben Stelle.
5759
</para>
5860
</note>
5961
</para>
@@ -68,7 +70,7 @@ $a =& $b
6870
<?php
6971
function foo(&$var) { }
7072
71-
foo($a); // $a wird "erstellt" mit dem Wert null
73+
foo($a); // $a wird "erstellt" und dem Wert null zugewiesen
7274
7375
$b = array();
7476
foo($b['b']);
@@ -108,10 +110,10 @@ $foo =& find_var($bar);
108110
</para>
109111
<warning>
110112
<para>
111-
Wird eine Referenz auf eine Variable, die in einer Funktion als
112-
<literal>global</literal> deklariert wurde, zugewiesen wird, dann ist
113-
die Referenz nur innerhalb der Funktion sichtbar. Das kann vermieden
114-
werden, indem das <varname>$GLOBALS</varname>-Array verwendet wird.
113+
Wird eine Referenz auf eine Variable zugewiesen, die in einer Funktion
114+
als <literal>global</literal> deklariert wurde, dann ist die Referenz
115+
nur innerhalb der Funktion sichtbar. Das kann vermieden werden, indem
116+
das <varname>$GLOBALS</varname>-Array verwendet wird.
115117
<example>
116118
<title>Referenzieren globaler Variablen innerhalb von Funktionen</title>
117119
<programlisting role="php">
@@ -187,11 +189,12 @@ $arr[0]++; $arr[1]++; $arr[2]++;
187189
</para>
188190
<para>
189191
Es ist allerdings zu beachten, dass Referenzen in Arrays potentiell
190-
gefährlich sind. Eine normale (also nicht Referenz-) Zuweisung mit einer
191-
Referenz auf der rechten Seite wandelt die linke Seite nicht in eine
192-
Referenz um, aber Referenzen innerhalb von Arrays bleiben bei solchen
193-
normalen Zuweisungen erhalten. Dies gilt ebenso für Funktionsaufrufe, bei
194-
denen das Array als Wertübergabe entgegengenommen wird. Beispiel:
192+
gefährlich sind. Eine normale Zuweisung (also nicht per Referenz) mit
193+
einer Referenz auf der rechten Seite wandelt die linke Seite nicht in
194+
eine Referenz um, aber Referenzen innerhalb von Arrays bleiben bei
195+
solchen normalen Zuweisungen erhalten. Dies gilt ebenso für
196+
Funktionsaufrufe, bei denen das Array als Wertübergabe entgegengenommen
197+
wird. Beispiel:
195198
<informalexample>
196199
<programlisting role="php">
197200
<![CDATA[
@@ -213,7 +216,7 @@ $arr2[0]++;
213216
]]>
214217
</programlisting>
215218
</informalexample>
216-
Anders ausgedrückt, ist das Referenzverhalten von Array auf einer
219+
Anders ausgedrückt ist das Referenzverhalten von Arrays auf einer
217220
Element-für-Element-Basis definiert; das Referenzverhalten einzelner
218221
Elemente ist getrennt vom Referenzzustand des Array-Behälters.
219222
</para>
@@ -222,14 +225,15 @@ $arr2[0]++;
222225
<title>Referenzübergabe</title>
223226
<para>
224227
Eine weitere Einsatzmöglichkeit von Referenzen ist die Übergabe von
225-
Variablen an eine Funktion per Referenz. Hierbei beziehen sich der lokale
226-
Variablenname als auch der Variablenname der aufrufenden Instanz auf
227-
denselben Variableninhalt:
228+
Variablen an eine Funktion per Referenz. Hierbei beziehen sich sowohl der
229+
lokale Variablenname als auch der Variablenname der aufrufenden Instanz
230+
auf denselben Variableninhalt:
228231
<informalexample>
229232
<programlisting role="php">
230233
<![CDATA[
231234
<?php
232-
function foo(&$var) {
235+
function foo(&$var)
236+
{
233237
$var++;
234238
}
235239
@@ -250,7 +254,7 @@ foo($a);
250254
<sect2 xml:id="language.references.whatdo.return">
251255
<title>Referenzrückgabe</title>
252256
<para>
253-
Daneben besteht die Möglichkeit, Werte aus Funktionen heraus
257+
Als Drittes bieten Referenzen die Möglichkeit, Werte aus Funktionen heraus
254258
<link linkend="language.references.return">per Referenz zurückzugeben</link>.
255259
</para>
256260
</sect2>
@@ -296,7 +300,7 @@ foo($bar);
296300
<title>Parameterübergabe per Referenz</title>
297301
<para>
298302
Man kann Variablen an Funktionen per Referenz übergeben, so dass die
299-
Funktion ihre Argumente modifizieren kann. Dazu benutzt man folgende
303+
Funktion die Variable modifizieren kann. Dazu benutzt man folgende
300304
Syntax:
301305
<informalexample>
302306
<programlisting role="php">
@@ -383,7 +387,7 @@ class Foobar
383387
}
384388
385389
foo(new Foobar()) // Erzeugt einen Hinweis von PHP 7.0.7 an
386-
// Notice: Only variables should be passed by reference
390+
// Hinweis: Nur Variablen sollten als Referenz übergeben werden
387391
?>
388392
]]>
389393
</programlisting>
@@ -414,26 +418,25 @@ class foo {
414418
}
415419
416420
$obj = new foo;
417-
$myValue = &$obj->getValue(); // $myValue ist eine Referenz auf $obj->value, mit dem Wert 42.
421+
$myValue = &$obj->getValue(); // $myValue ist eine Referenz auf $obj->value, was den Wert 42 hat.
418422
$obj->value = 2;
419423
echo $myValue; // Zeigt den neuen Wert von $obj->value, also 2.
420424
?>
421425
]]>
422426
</programlisting>
423427
</informalexample>
424-
In diesem Beispiel wird also die Eigenschaft des von
425-
<varname>getValue</varname> gelieferten Objektes gesetzt, nicht die der
426-
Kopie, wie es der Fall wäre, wenn die Funktion <varname>getValue</varname>
427-
ihr Ergebnis nicht per Referenz liefern würde.
428+
In diesem Beispiel weisen wir der Eigenschaft des von der Funktion
429+
<varname>getValue</varname> zurückgegebenen Objekts einen Wert zu, und
430+
nicht seiner Kopie, wie es der Fall wäre, wenn wir nicht die
431+
Referenzsyntax verwendet hätten.
428432
</para>
429433
<note>
430434
<simpara>
431-
Im Gegensatz zur Parameterübergabe per Referenz ist bei der Rückgabe
432-
mittels Referenz an beiden Stellen die Angabe des
433-
<literal>&amp;</literal> notwendig. Dies zeigt an, dass Sie eine Referenz
434-
und nicht wie gewöhnlich eine Kopie zurückgeben. Ebenfalls wird
435-
angezeigt, dass für <varname>$myValue</varname> im Gegensatz zur normalen
436-
Zuweisung eine Referenzbindung durchgeführt wird.
435+
Im Gegensatz zur Parameterübergabe ist hier an beiden Stellen die Angabe
436+
des <literal>&amp;</literal> notwendig. Dies zeigt an, dass Sie eine
437+
Referenz und keine Kopie zurückgeben. Ebenfalls wird angezeigt, dass für
438+
<varname>$myValue</varname> im Gegensatz zur normalen Zuweisung eine
439+
Referenzbindung durchgeführt werden soll.
437440
</simpara>
438441
</note>
439442
<note>
@@ -483,7 +486,7 @@ array_push(collector(), 'foo');
483486
<simpara>
484487
Es ist zu beachten, dass
485488
<literal>array_push(&amp;collector(), 'foo');</literal>
486-
<emphasis>nicht</emphasis> möglich ist; es erzeugt einen fatalen Fehler.
489+
<emphasis>nicht</emphasis> funktioniert; es erzeugt einen fatalen Fehler.
487490
</simpara>
488491
</note>
489492
</sect1>
@@ -525,7 +528,7 @@ unset($a);
525528
</simpara>
526529

527530
<sect2 xml:id="references.global">
528-
<title><literal>global</literal> Referenzen</title>
531+
<title>Globale Referenzen</title>
529532
<para>
530533
Wird eine Variable als <command>global $var</command> deklariert, wird
531534
eine Referenz auf die globale Variable <varname>$var</varname> erzeugt.

language/types/float.xml

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
33
<!-- EN-Revision: d494ffa4d9f83b60fe66972ec2c0cf0301513b4a Maintainer: simp Status: ready -->
4-
<!-- Reviewed: no -->
4+
<!-- Reviewed: yes -->
5+
<!-- Rev-Revision: 1.0 Reviewer: samesch -->
56
<sect1 xml:id="language.types.float" xmlns:xlink="http://www.w3.org/1999/xlink">
67
<title>Gleitkommazahlen</title>
78

89
<para>
9-
Gleitkommazahlen (auch als "floats", "doubles" oder "reelle Zahlen" bezeichnet)
10-
können anhand einer der folgenden Schreibweisen bezeichnet werden:
10+
Gleitkommazahlen (auch als "floats", "doubles" oder "reelle Zahlen"
11+
bezeichnet) können anhand einer der folgenden Schreibweisen bezeichnet
12+
werden:
1113
</para>
1214

1315
<informalexample>
@@ -38,9 +40,9 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
3840
</informalexample>
3941

4042
<para>
41-
Die Größe einer Gleitkommazahl ist plattformabhängig, ein Maximalwert von circa
42-
1.8e308 mit einer Präzision von ungefähr 14 Dezimal-Nachkommastellen ist jedoch
43-
ein üblicher Wert (64-Bit IEEE-Format).
43+
Die Größe einer Gleitkommazahl ist plattformabhängig, ein Maximalwert von
44+
circa 1.8e308 mit einer Präzision von ungefähr 14 Dezimal-Nachkommastellen
45+
ist jedoch ein üblicher Wert (64-Bit IEEE-Format).
4446
</para>
4547

4648
<warning xml:id="warn.float-precision">
@@ -49,20 +51,21 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
4951
<para>
5052
Gleitkommazahlen haben eine begrenzte Präzision. Obgleich dies vom System
5153
abhängig ist, verwendet PHP üblicherweise das IEEE 754 Double Precision
52-
Format, welches einen maximalen relativen Rundungsfehler in einer Größenordnung
53-
en 1.11e-16 ergibt. Nicht-Elementare arithmetische Operationen können jedoch
54-
größere Fehler hervorgerufen und natürlich muss eine Fortpflanzung des Fehlers
55-
berücksichtigt werden, wenn mehrere Operationen zusammengesetzt werden.
54+
Format, welches einen maximalen relativen Rundungsfehler in einer
55+
Größenordnung en 1.11e-16 ergibt. Nicht-Elementare arithmetische
56+
Operationen können jedoch größere Fehler hervorgerufen und natürlich muss
57+
eine Fortpflanzung des Fehlers berücksichtigt werden, wenn mehrere
58+
Operationen zusammengesetzt werden.
5659
</para>
5760

5861
<para>
59-
Außerdem gibt es rationale Zahlen die zur Basis 10 als Gleitkommazahlen exakt
60-
dargestellt werden können, beispielsweise <literal>0.1</literal> or
62+
Außerdem gibt es rationale Zahlen die zur Basis 10 als Gleitkommazahlen
63+
exakt dargestellt werden können, beispielsweise <literal>0.1</literal> or
6164
<literal>0.7</literal>, für die es aber keine exakte Repräsentation als
62-
Gleitkommazahlen zur Basis 2 gibt, welche intern aber unabhängig von der Größe
63-
der Mantisse verwendet wird. Daher können Sie nicht ohne einen geringen
64-
Präzisionsverlust in ihre intern binäre Darstellung umgewandelt werden.
65-
Dies kann zu verwirrenden Ergebnissen führen:
65+
Gleitkommazahlen zur Basis 2 gibt, welche intern aber unabhängig von der
66+
Größe der Mantisse verwendet wird. Daher können Sie nicht ohne einen
67+
geringen Präzisionsverlust in ihre intern binäre Darstellung umgewandelt
68+
werden. Dies kann zu verwirrenden Ergebnissen führen:
6669
<literal>floor((0.1+0.7)*10)</literal> wird üblicherweise
6770
<literal>7</literal> ergeben statt des erwarteten Ergebnisses von
6871
<literal>8</literal>, da die interne Repräsentation etwas ist wie
@@ -71,30 +74,30 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
7174

7275
<para>
7376
Man sollte sich daher niemals bis zur letzten Nachkommastelle auf
74-
Gleitkommazahlen verlassen und Gleitkommazahlen niemals direkt auf Gleichheit
75-
prüfen. Wenn eine höhere Präzision notwendig ist, stehen die
76-
<link linkend="ref.bc">Mathematikfunktionen mit beliebiger Präzision</link> und
77-
<link linkend="ref.gmp">gmp</link>-Funktionen zur Verfügung.
77+
Gleitkommazahlen verlassen und Gleitkommazahlen niemals direkt auf
78+
Gleichheit prüfen. Wenn eine höhere Präzision notwendig ist, stehen die
79+
<link linkend="ref.bc">Mathematikfunktionen mit beliebiger Präzision</link>
80+
und die <link linkend="ref.gmp">gmp</link>-Funktionen zur Verfügung.
7881
</para>
7982

8083
<para>
8184
Für eine "einfache" Erklärung, steht der Ratgeber
82-
<link xlink:href="&url.floating.point.guide;">Floating Point Guide</link> zur
83-
Verfügung, welche auch den Titel hat "Why don’t my numbers add up?"
85+
<link xlink:href="&url.floating.point.guide;">Floating Point Guide</link>
86+
zur Verfügung, welche auch den Titel hat "Why don’t my numbers add up?"
8487
</para>
8588
</warning>
8689

8790
<sect2 xml:id="language.types.float.casting">
88-
<title>Konvertierung in float</title>
91+
<title>Umwandlung in float</title>
8992

9093
<sect3 xml:id="language.types.float.casting.from-string">
9194
<title>Von Strings</title>
9295

9396
<simpara>
9497
Wenn der String
95-
<link linkend="language.types.numeric-strings">numerisch</link>
96-
ist oder numerisch beginnt, wird er in den entsprechenden
97-
entsprechenden Gleitkommawert umgewandelt, andernfalls wird er in Null
98+
<link linkend="language.types.numeric-strings">numerisch</link> ist oder
99+
numerisch beginnt, wird er in den entsprechenden entsprechenden
100+
Gleitkommawert umgewandelt, andernfalls wird er in Null
98101
(<literal>0</literal>) umgewandelt.
99102
</simpara>
100103
</sect3>
@@ -103,16 +106,16 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
103106
<title>Von anderen Typen</title>
104107

105108
<para>
106-
Werte alle anderen Typen werden konvertiert, indem der Wert zuerst in den
107-
Typ <type>int</type> konvertiert wird und dieser anschließend zu
109+
Werte aller anderen Typen werden umgewandelt, indem der Wert zuerst in den
110+
Typ <type>int</type> umgewandelt wird und dieser anschließend zu
108111
<type>float</type>. Weitere Informationen findet man unter
109-
<link linkend="language.types.integer.casting">Konvertierung in Integer</link>.
112+
<link linkend="language.types.integer.casting">Umwandlung in Integer</link>.
110113
</para>
111114

112115
<note>
113116
<para>
114-
Da bestimmte Typen ein undefiniertes Verhalten bei der Konvertierung in
115-
<type>int</type> haben, ist dies auch bei der Konvertierung in
117+
Da bestimmte Typen ein undefiniertes Verhalten bei der Umwandlung in
118+
<type>int</type> haben, ist dies auch bei der Umwandlung in
116119
<type>float</type> der Fall.
117120
</para>
118121
</note>
@@ -125,20 +128,21 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
125128
<para>
126129
Wie in der obigen Warnung bereits dargestellt, ist es problematisch
127130
Gleitkommazahlen auf Gleichheit zu überprüfen, aufgrund ihrer internen
128-
Darstellungsart. Es gibt allerdings Wege diese Vergleiche von
131+
Darstellungsart. Es gibt allerdings Wege, diese Vergleiche von
129132
Gleitkommazahlen anzustellen, die diese Beschränkungen umgehen.
130133
</para>
131134

132135
<para>
133-
Um Gleitkommazahlen auf Gleichheit zu prüfen, wird eine obere Schranke
134-
für den Rundungsfehler verwendet. Dieser Wert ist bekannt als
135-
Maschinengenauigkeit Epsilon bekannt und stellt die kleinste annehmbare
136-
Differenz in der Berechnung dar.
136+
Um Gleitkommazahlen auf Gleichheit zu prüfen, wird eine obere Schranke für
137+
den Rundungsfehler verwendet. Dieser Wert ist bekannt als
138+
Maschinengenauigkeit Epsilon und stellt die kleinste annehmbare Differenz
139+
in der Berechnung dar.
137140
</para>
138141

139142
<informalexample>
140143
<simpara>
141-
<varname>$a</varname> und <varname>$b</varname> sind bis auf 5 Nachkommastellen gleich.
144+
<varname>$a</varname> und <varname>$b</varname> sind bis auf 5
145+
Nachkommastellen gleich.
142146
</simpara>
143147
<programlisting role="php">
144148
<![CDATA[
@@ -159,18 +163,18 @@ if(abs($a-$b) < $epsilon) {
159163
<sect2 xml:id="language.types.float.nan">
160164
<title>NaN</title>
161165
<para>
162-
Einige numerische Operationen können einen Wert ergeben der durch
163-
die Konstante <constant>NAN</constant> repräsentiert wird. Dieses Ergebnis
164-
repräsentiert einen undefinierten oder nicht darstellbaren Wert in
165-
den Fließkommaberechnungen. Jeder strikte oder nicht strikte Vergleich dieses Werts
166-
mit jedem beliebigen anderen Wert, inklusive sich selbst, nur nicht &true;,
167-
wird ein Ergebnis von &false; hervorbringen.
166+
Einige numerische Operationen können einen Wert ergeben, der durch die
167+
Konstante <constant>NAN</constant> dargestellt wird. Dieses Ergebnis
168+
stellt einen undefinierten oder nicht darstellbaren Wert in den
169+
Fließkommaberechnungen dar. Jeder strikte oder nicht strikte Vergleich
170+
dieses Werts mit jedem beliebigen anderen Wert, inklusive sich selbst, nur
171+
nicht &true;, wird ein Ergebnis von &false; hervorbringen.
168172
</para>
169173
<para>
170-
Da <constant>NAN</constant> eine beliebige Anzahl von anderen Werten darstellen
171-
kann, sollte <constant>NAN</constant> nicht mit anderen Werten verglichen werden,
172-
einschließlich sich selbst. Stattdessen sollte zur Prüfung
173-
<function>is_nan</function> verwendet werden.
174+
Da <constant>NAN</constant> eine beliebige Anzahl von anderen Werten
175+
darstellen kann, sollte <constant>NAN</constant> nicht mit anderen Werten,
176+
einschließlich sich selbst, verglichen werden. Stattdessen sollte zur
177+
Prüfung <function>is_nan</function> verwendet werden.
174178
</para>
175179
</sect2>
176180
</sect1>

0 commit comments

Comments
 (0)