diff --git a/reference/filesystem/functions/tempnam.xml b/reference/filesystem/functions/tempnam.xml index 9119a37e4..f24c87335 100644 --- a/reference/filesystem/functions/tempnam.xml +++ b/reference/filesystem/functions/tempnam.xml @@ -1,6 +1,6 @@ - + @@ -75,6 +75,13 @@ + + 8.4.0 + + Der Name der von tempnam erstellten Dateien ist + nun 13 Bytes länger. Die Gesamtlänge ist weiterhin plattformabhängig. + + 7.1.0 diff --git a/reference/spl/splfixedarray.xml b/reference/spl/splfixedarray.xml new file mode 100644 index 000000000..daf1a92d3 --- /dev/null +++ b/reference/spl/splfixedarray.xml @@ -0,0 +1,216 @@ + + + + Die Klasse SplFixedArray + SplFixedArray + + + + +
+ &reftitle.intro; + + Die Klasse SplFixedArray stellt die wesentlichen Funktionen eines Arrays + bereit. Der Hauptunterschied zwischen einem SplFixedArray und einem + normalen PHP-Array besteht darin, dass die Größe eines SplFixedArray + manuell geändert werden muss und nur Ganzzahlen innerhalb des Bereichs + als Indizes zulässig sind. Der Vorteil ist, dass es weniger Speicher als + ein normales array verbraucht. + +
+ + +
+ &reftitle.classsynopsis; + + + + + SplFixedArray + + + + implements + IteratorAggregate + + + + ArrayAccess + + + + Countable + + + + JsonSerializable + + + &Methods; + + + + + + + + +
+ +
+ &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.4.0 + + Zugriffe außerhalb des gültigen Bereichs in + SplFixedArray werfen nun Exceptions vom Typ + OutOfBoundsException anstelle von + RuntimeException. Da + OutOfBoundsException eine Unterklasse + von RuntimeException ist, ergeben sich + beim Abfangen dieser Exceptions keine Verhaltensänderungen. + + + + 8.2.0 + + Die magischen Methoden + SplFixedArray::__serialize und + SplFixedArray::__unserialize + wurden zu SplFixedArray hinzugefügt. + + + + 8.1.0 + + SplFixedArray implementiert nun + JsonSerializable. + + + + 8.0.0 + + SplFixedArray implementiert nun + IteratorAggregate. + Zuvor wurde stattdessen Iterator + implementiert. + + + + + +
+ + +
+ &reftitle.examples; + + + <classname>SplFixedArray</classname>-Anwendungsbeispiel + +setSize(10); + +$array[9] = "asdf"; + +// Das Array auf eine Größe von 2 verkleinern +$array->setSize(2); + +// Die folgenden Zeilen werfen eine RuntimeException: Index invalid or out of range +try { + var_dump($array["non-numeric"]); +} catch(RuntimeException $re) { + echo "RuntimeException: ".$re->getMessage()."\n"; +} + +try { + var_dump($array[-1]); +} catch(RuntimeException $re) { + echo "RuntimeException: ".$re->getMessage()."\n"; +} + +try { + var_dump($array[5]); +} catch(RuntimeException $re) { + echo "RuntimeException: ".$re->getMessage()."\n"; +} +?> +]]> + + &example.outputs; + + + + + +
+ + + + +
+ + &reference.spl.entities.splfixedarray; + +
+ diff --git a/reference/var/functions/debug-zval-dump.xml b/reference/var/functions/debug-zval-dump.xml new file mode 100644 index 000000000..8c55689d3 --- /dev/null +++ b/reference/var/functions/debug-zval-dump.xml @@ -0,0 +1,213 @@ + + + + + debug_zval_dump + Gibt eine Zeichenkettendarstellung einer internen zval-Struktur aus + + + &reftitle.description; + + voiddebug_zval_dump + mixedvalue + mixedvalues + + + Gibt eine Zeichenkettendarstellung einer internen zval-Struktur (Zend + value) aus. Das ist vor allem nützlich, um Implementierungsdetails der Zend + Engine oder von PHP-Erweiterungen zu verstehen oder zu debuggen. + + + + &reftitle.parameters; + + + + value + + + Die auszugebende Variable oder der auszugebende Wert. + + + + + values + + + Weitere auszugebende Variablen oder Werte. + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.4.0 + + debug_zval_dump gibt nun an, ob ein Array gepackt + ist. + + + + + + + + + &reftitle.examples; + + + <function>debug_zval_dump</function>-Beispiel + + +]]> + + &example.outputs; + + + + + + + Den <literal>refcount</literal> verstehen + + Der von dieser Funktion angezeigte refcount-Wert kann + ohne ein detailliertes Verständnis der Implementierung der Engine + überraschend sein. + + + Die Zend Engine verwendet Referenzzählung für zwei verschiedene Zwecke: + + + + + Optimierung des Speicherverbrauchs mit einer Technik namens "Copy on + Write", bei der mehrere Variablen, die denselben Wert enthalten, auf + dieselbe Kopie im Speicher verweisen. Wird eine der Variablen geändert, + wird sie auf eine neue Kopie im Speicher verwiesen, und der + Referenzzähler des Originals wird um 1 verringert. + + + Verfolgung von Variablen, die per Referenz zugewiesen oder übergeben + wurden (siehe Referenzen + erklärt). Dieser refcount wird in einem separaten Referenz-zval + gespeichert, der auf das zval für den aktuellen Wert verweist. Dieses + zusätzliche zval wird derzeit nicht von + debug_zval_dump angezeigt. + + + + + Da debug_zval_dump seine Eingabe als normale, per + Wert übergebene Parameter entgegennimmt, wird zu ihrer Übergabe die + Copy-on-Write-Technik verwendet: Anstatt die Daten zu kopieren, wird der + refcount für die Dauer des Funktionsaufrufs um eins erhöht. Würde die + Funktion den Parameter nach dem Empfang ändern, würde eine Kopie + erstellt; da sie das nicht tut, zeigt sie einen um eins höheren refcount + als im aufrufenden Geltungsbereich an. + + + Die Parameterübergabe verhindert außerdem, dass + debug_zval_dump Variablen anzeigt, die per Referenz + zugewiesen wurden. Zur Veranschaulichung soll eine leicht abgewandelte + Version des obigen Beispiels betrachtet werden: + + + + +]]> + + &example.outputs; + + + + + + + Obwohl $var1, $var2 und + $var3 als Referenzen verknüpft sind, wird nur der + Wert an debug_zval_dump + übergeben. Dieser Wert wird einmal von der Gruppe der Referenzen und + einmal innerhalb von debug_zval_dump verwendet und + zeigt daher einen refcount von 2. + + + Weitere Komplikationen ergeben sich durch Optimierungen, die in der Engine + für verschiedene Datentypen vorgenommen werden. Einige Typen wie + Ganzzahlen verwenden kein "Copy on Write" und zeigen daher überhaupt + keinen refcount. In anderen Fällen zeigt der refcount zusätzliche, intern + verwendete Kopien, etwa wenn eine literale Zeichenkette oder ein Array als + Teil einer Code-Anweisung gespeichert wird. + + + + + &reftitle.seealso; + + + var_dump + debug_backtrace + Referenzen erklärt + Referenzen erklärt (von Derick Rethans) + + + + + diff --git a/reference/var/functions/unserialize.xml b/reference/var/functions/unserialize.xml index c3ad0a77f..3f8774944 100644 --- a/reference/var/functions/unserialize.xml +++ b/reference/var/functions/unserialize.xml @@ -1,5 +1,5 @@ - + @@ -178,6 +178,14 @@ kein array von Klassennamen ist.
+ + 8.4.0 + + Das Deserialisieren von Zeichenketten mit dem großgeschriebenen + "S"-Tag ist nun veraltet; stattdessen sollte das + kleingeschriebene "s"-Tag verwendet werden. + + 8.3.0