svn: /phpdoc/de/trunk/language/oop5/ basic.xml
[email protected] (Martin Samesch)
| Newsgroups | php.doc.de |
|---|---|
| Message-ID | <[email protected]> |
samesch Tue, 22 Dec 2020 19:38:13 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=352174
Log:
Sync with EN
Changed paths:
U phpdoc/de/trunk/language/oop5/basic.xml
Modified: phpdoc/de/trunk/language/oop5/basic.xml
===================================================================
--- phpdoc/de/trunk/language/oop5/basic.xml 2020-12-22 18:31:05 UTC (rev 352173)
+++ phpdoc/de/trunk/language/oop5/basic.xml 2020-12-22 19:38:13 UTC (rev 352174)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 347269 Maintainer: wiesemann Status: ready -->
+<!-- EN-Revision: 351963 Maintainer: wiesemann Status: ready -->
<sect1 xml:id="language.oop5.basic" xmlns="http://docbook.org/ns/docbook">
<title>Die Grundlagen</title>
@@ -273,8 +273,14 @@
]]>
</screen>
</example>
+
+ <note>
+ <simpara>
+ Vor PHP 7.1 werden die Argumente nicht ausgewertet, wenn keine
+ Konstruktor-Funktion definiert ist.
+ </simpara>
+ </note>
</sect2>
-
<sect2 xml:id="language.oop5.basic.properties-methods">
<title>Eigenschaften und Methoden</title>
@@ -414,7 +420,7 @@
<title>::class</title>
<para>
- Mit PHP 5.5 kann auch das Schlüsselwort <literal>class</literal> für die
+ Das Schlüsselwort <literal>class</literal> kann auch für die
Namensauflösung einer Klasse verwendet werden. Man erhält den vollständig
qualifizierten Namen der Klasse <literal>ClassName</literal> durch
Verwendung von <literal>ClassName::class</literal>. Dies ist vor allem
@@ -453,8 +459,102 @@
Daraus folgt, dass Klassennamen erweitert werden, selbst wenn die Klasse
nicht existiert. In diesem Fall wird kein Fehler erzeugt.
</para>
+ <example xml:id="language.oop5.basic.class.class.fail">
+ <title>Fehlende Auflösung des Klassennamens></title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+print Does\Not\Exist::class;
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+Does\Not\Exist
+]]>
+ </screen>
+ </example>
</note>
+ <para>
+ Von PHP 8.0.0 an kann die Konstante <literal>::class</literal> auch auf
+ Objekte angewendet werden. Diese Auflösung des Klassennamens erfolgt nicht
+ zur Übersetzungszeit, sondern zur Laufzeit. Sie hat die gleichen
+ Auswirkungen wie der Aufruf von <function>get_class</function> auf das
+ Objekt.
+ </para>
+ <example xml:id="language.oop5.basic.class.class.object">
+ <title>Namensauflösung eines Objekts</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+namespace NS {
+ class ClassName {
+ }
+}
+$c = new ClassName();
+print $c::class;
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+NS\ClassName
+]]>
+ </screen>
+ </example>
</sect2>
+ <sect2 xml:id="language.oop5.basic.nullsafe">
+ <title>Nullsafe-Methoden und -Eigenschaften</title>
+ <para>
+ Von PHP 8.0.0 an kann auf Eigenschaften und Methoden stattdessen auch mit
+ dem "Nullsafe"-Operator zugegriffen werden: <literal>?-></literal>. Der
+ Nullsafe-Operator funktioniert genauso als Eigenschafts- oder
+ Methodenzugriff wie oben, mit dem Unterschied, dass &null; zurückgegeben
+ wird, statt dass eine Exception erzeugt wird, wenn das Objekt, das
+ dereferenziert wird, &null; ist. Wenn die Dereferenzierung Teil einer
+ Zeichenkette ist, wird der Rest der Zeichenkette übersprungen.
+ </para>
+ <para>
+ Der Effekt ist ähnlich, wie wenn man jeden Zugriff zuerst mit
+ <function>ist_null</function> prüft, aber kompakter.
+ </para>
+ <para>
+ <example>
+ <title>Nullsafe Operator</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+// Von PHP 8.0.0 an entspricht diese Zeile:
+$result = $repository?->getUser(5)?->name;
+
+// dem folgenden Codeblock:
+if (is_null($repository)) {
+ $result = null;
+} else {
+ $user = $repository->getUser(5);
+ if (is_null($user)) {
+ $result = null;
+ } else {
+ $result = $user->name;
+ }
+}
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <note>
+ <para>
+ Der Nullsafe-Operator wird am besten verwendet, wenn Null ein gültiger
+ und potenziell erwarteter möglicher Rückgabewert für eine Eigenschaft
+ oder eine Methode ist. Um einen Fehler anzuzeigen, ist die Erzeugung
+ einer Exception vorzuziehen.
+ </para>
+ </note>
+ </sect2>
</sect1>
<!-- Keep this comment at the end of the file