diff --git a/appendices/migration80/incompatible.xml b/appendices/migration80/incompatible.xml index 25b0c3ad3..af81f3c3b 100644 --- a/appendices/migration80/incompatible.xml +++ b/appendices/migration80/incompatible.xml @@ -1,6 +1,6 @@ - + Nicht abwärtskompatible Änderungen @@ -1860,7 +1860,7 @@ echo file_get_contents('http://example.org', false, $ctx); XMLReader::open und - XMLReader::xml sind nun statische Methoden. Sie + XMLReader::XML sind nun statische Methoden. Sie können immer noch als Instanzmethoden aufgerufen werden, aber erbende Klassen müssen diese Methoden als statisch deklarieren, wenn sie sie überschreiben. diff --git a/appendices/reserved.constants.core.xml b/appendices/reserved.constants.core.xml index 20e9faa69..c4d4a2065 100644 --- a/appendices/reserved.constants.core.xml +++ b/appendices/reserved.constants.core.xml @@ -1,6 +1,6 @@ - + Vordefinierte Core-Konstanten @@ -107,7 +107,8 @@ PHP_ZTS - (int) + (bool) + &Alias; ZEND_THREAD_SAFE @@ -118,7 +119,8 @@ PHP_DEBUG - (int) + (bool) + &Alias; ZEND_DEBUG_BUILD diff --git a/language/constants.xml b/language/constants.xml index e0330ad19..5a770574e 100644 --- a/language/constants.xml +++ b/language/constants.xml @@ -1,6 +1,6 @@ - + @@ -128,7 +128,7 @@ define("__FOO__", "irgendwas"); Falls eine undefinierte Konstante verwendet wird, wird ein Error ausgelöst. Vor PHP 8.0.0 wurden undefinierte - Konstanten als einfaches &string;-Wort (d. h. CONSTANT vs + Konstanten als einfaches &string;-Wort (&dh; CONSTANT vs "CONSTANT") interpretiert. Dieses Rückfallverhalten ist von PHP 7.2.0 an missbilligt, und ein Fehler der Stufe E_WARNING wird ausgelöst, wenn es dazu kommt. Vor PHP 7.2.0 wurde stattdessen ein Fehler @@ -257,7 +257,7 @@ echo ANIMALS[1]; // gibt "Katze" aus vordefinierten Konstanten zur Verfügung. Viele dieser Konstanten werden jedoch von verschiedenen Erweiterungen definiert, die nur zur Verfügung stehen, wenn diese - Erweiterungen selbst zur Verfügung stehen, d. h. entweder über dynamisches + Erweiterungen selbst zur Verfügung stehen, &dh; entweder über dynamisches Laden zur Laufzeit oder Einkompilieren. @@ -321,7 +321,7 @@ echo ANIMALS[1]; // gibt "Katze" aus __CLASS__ Der Name einer Klasse. Der Klassenname enthält den Namen des - Namensraums, in dem sie deklariert wurde (z. B. + Namensraums, in dem sie deklariert wurde (&zb; Foo\Bar). Bei Verwendung in einer Trait-Methode, ist __CLASS__ der Name der Klasse, in der der Trait verwendet wird. @@ -330,7 +330,7 @@ echo ANIMALS[1]; // gibt "Katze" aus __TRAIT__ Der Name eines Traits. Dieser enthält auch den Namensraum, in welchem - der Trait definiert wurde (z. B. Foo\Bar). + der Trait definiert wurde (&zb; Foo\Bar). @@ -339,6 +339,14 @@ echo ANIMALS[1]; // gibt "Katze" aus Der Name der Klassenmethode. + + __PROPERTY__ + + Nur gültig innerhalb eines + Eigenschafts-Hooks; + entspricht dem Namen der Eigenschaft. + + __NAMESPACE__ diff --git a/language/oop5.xml b/language/oop5.xml index 94199c9c3..2badfd2ce 100644 --- a/language/oop5.xml +++ b/language/oop5.xml @@ -1,6 +1,6 @@ - + Klassen und Objekte @@ -30,6 +30,7 @@ &language.oop5.basic; &language.oop5.properties; + &language.oop5.property-hooks; &language.oop5.constants; &language.oop5.autoload; &language.oop5.decon; diff --git a/language/oop5/abstract.xml b/language/oop5/abstract.xml index 986d9e7d7..769ea80c5 100644 --- a/language/oop5/abstract.xml +++ b/language/oop5/abstract.xml @@ -1,29 +1,47 @@ - + Klassenabstraktion - PHP unterstützt abstrakte Klassen und Methoden. Abstrakt definierte - Klassen können nicht instantiiert werden. Jede Klasse, - die wenigstens eine abstrakte Methode enthält, muss ebenso abstrakt sein. - Abstrakt definierte Methoden deklarieren nur die Signatur der Methode - - sie können nicht die Implementierung definieren. + PHP unterstützt abstrakte Klassen und Methoden. Abstrakt definierte Klassen + können nicht instantiiert werden. Jede Klasse, die wenigstens eine abstrakte + Methode oder Eigenschaft enthält, muss ebenso abstrakt sein. Als abstrakt + definierte Methoden deklarieren nur die Signatur der Methode und ob sie + öffenlich oder geschützt ist - sie können nicht die Implementierung + definieren. Als abstrakt definierte Eigenschaften können eine Anforderung + für das Verhalten von get oder set + deklarieren und eine Implementierung für eine, aber nicht für beide + Operationen bereitstellen. Wenn von einer abstrakten Klasse abgeleitet wird, müssen alle in der Deklaration - der Elternklasse als abstrakt bezeichneten Methoden durch das Kind definiert + der Elternklasse als abstrakt bezeichneten Methoden durch das Kind definiert werden und den üblichen Regeln zur Vererbung und Signatur-Kompatibilität folgen. + + Seit PHP 8.4 kann eine abstrakte Klasse eine abstrakte Eigenschaft + deklarieren, die entweder öffenlich oder geschützt ist. + Eine abstrakte Eigenschaft, die geschützt ist, kann durch eine Eigenschaft + erfüllt werden, die entweder vom geschützten oder vom öffenlichen + Geltungsbereich aus lesbar/schreibbar ist + + + Eine abstrakte Eigenschaft kann entweder durch eine Standardeigenschaft oder + durch eine Eigenschaft mit definierten + Hooks erfüllt werden, + die der erforderlichen Operation entspricht. + + - Beispiel für abstrakte Klasse - + Beispiel für eine abstrakte Methode + - + - Beispiel für abstrakte Klasse + Beispiel für eine abstrakte Methode prefixName("Pacman"), "\n"; echo $class->prefixName("Pacwoman"), "\n"; ?> ]]> - - &example.outputs; - + + &example.outputs; + - - - + + + + Beispiel für eine abstrakte Eigenschaft + + $value; + } + + // Dies erweitert die Sichtbarkeit von geschützt auf öffentlich, was in + // Ordnung ist. + public string $both; +} +?> +]]> + + + + Eine abstrakte Eigenschaft einer abstrakten Klasse kann Implementierungen + für jeden Hook bereitstellen, muss aber entweder get oder + set deklariert, aber nicht definiert haben (wie im obigen + Beispiel). + + + Beispiel für eine abstrakte Eigenschaft + +foo = $value }; + } +} +?> + ]]> + + + - + @@ -18,10 +18,12 @@ Der Klassenname kann ein beliebiger gültiger Bezeichner sein, vorausgesetzt es ist kein von PHP - reserviertes Wort. Ein gültiger - Klassenname beginnt mit einem Buchstaben oder einem Unterstrich, gefolgt - von einer beliebigen Anzahl von Buchstaben, Ziffern oder Unterstrichen; - als regulärer Ausdruck formuliert: + reserviertes Wort. + Seit PHP 8.4.0 ist die Verwendung eines einzelnen Unterstrichs + _ als Klassenname veraltet. + Ein gültiger Klassenname beginnt mit einem Buchstaben oder einem + Unterstrich, gefolgt von einer beliebigen Anzahl von Buchstaben, Ziffern + oder Unterstrichen; als regulärer Ausdruck formuliert: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$. diff --git a/language/oop5/interfaces.xml b/language/oop5/interfaces.xml index 20c18fab3..5eb629092 100644 --- a/language/oop5/interfaces.xml +++ b/language/oop5/interfaces.xml @@ -1,16 +1,16 @@ - + Objekt-Interfaces (Schnittstellen) Objekt-Interfaces ermöglichen die Erzeugung von Code, der spezifiziert, - welche Methoden eine Klasse implementieren muss, ohne definieren zu müssen, - wie diese Methoden implementiert werden. Interfaces teilen sich einen - Namensraum mit Klassen und Traits, daher dürfen sie nicht denselben Namen - verwenden. + welche Methoden und Eigenschaften eine Klasse implementieren muss, ohne + definieren zu müssen, wie diese Methoden und Eigenschaften implementiert + werden. Interfaces teilen sich einen Namensraum mit Klassen und Traits, + daher dürfen sie nicht denselben Namen verwenden. Interfaces werden auf dieselbe Weise wie eine Klasse definiert, aber mit @@ -85,14 +85,14 @@ - Ein Interface kann ebenso wie eine Klasse mit Hilfe des Operators + Eine Schnittstelle kann ebenso wie eine Klasse mit Hilfe des Operators extends erweitert werden. - Die Klasse, die das Interface implementiert, muss alle Methoden des - Interfaces mit einer + Die Klasse, die die Schnittstelle implementiert, muss alle Methoden der + Schnittstelle mit einer kompatiblen Signatur deklarieren. Eine Klasse kann mehrere Schnittstellen implementieren, die eine Methode mit demselben Namen deklarieren. In diesem Fall muss die Implementierung @@ -107,13 +107,98 @@ Konstanten - Ein Interface kann Konstanten definieren. Interface-Konstanten + Eine Schnittstelle kann Konstanten definieren. Schnittstellen-Konstanten funktionieren genauso wie Klassenkonstanten. Vor PHP 8.1.0 können sie nicht von einer Klasse/Schnittstelle überschrieben werden, die sie erbt. + + Eigenschaften + + Seit PHP 8.4.0 können Schnittstellen auch Eigenschaften deklarieren. + In diesem Fall muss die Deklaration angeben, ob die Eigenschaft lesbar, + schreibbar oder beides sein soll. + Die Deklaration der Schnittstelle gilt nur für den öffentlichen Lese- und + Schreibzugriff. + + + Eine Klasse kann eine Schnittstelleneigenschaft auf mehrere Arten erfüllen. + Sie kann eine öffentliche Eigenschaft definieren. + Sie kann eine öffentliche + virtuelle Eigenschaft + definieren, die nur den entsprechenden Hook implementiert. + Oder eine lesbare Eigenschaft kann durch eine + readonly-Eigenschaft erfüllt werden. + Eine Schnittstelleneigenschaft, die gesetzt werden kann, kann jedoch nicht + readonly sein. + + + Beispiel für Schnittstelleneigenschaften + + strtoupper($this->writeable); } + + // Die Schnittstelle verlangt nur, dass die Eigenschaft gesetzt werden + // kann, aber auch get-Operationen sind absolut zulässig. + // Dieses Beispiel erzeugt eine virtuelle Eigenschaft, was in Ordnung ist. + public string $writeable { + get => $this->written; + set => $value; + } + + // Diese Eigenschaft verlangt, dass sowohl Lesen als auch Schreiben + // möglich ist, sodass entweder beides implementiert werden muss + // oder das Standardverhalten beibehalten werden kann. + public string $both { + get => $this->all; + set => strtoupper($value); + } +} +?> +]]> + + + &reftitle.examples; diff --git a/reference/curl/functions/curl-version.xml b/reference/curl/functions/curl-version.xml index e67e3b1c3..00d3d3f3f 100644 --- a/reference/curl/functions/curl-version.xml +++ b/reference/curl/functions/curl-version.xml @@ -1,6 +1,6 @@ - + @@ -74,6 +74,13 @@ protocols Ein Array der von cURL unterstützten Protokollnamen + + feature_list + + Ein assoziatives Array mit allen bekannten cURL-Funktionen und ob sie + unterstützt werden (&true;) oder nicht (&false;) + + @@ -91,6 +98,12 @@ + + 8.4.0 + + features_list wurde hinzugefügt. + + 8.0.0 diff --git a/reference/errorfunc/constants.xml b/reference/errorfunc/constants.xml index d4581d3c0..672f93d0e 100644 --- a/reference/errorfunc/constants.xml +++ b/reference/errorfunc/constants.xml @@ -1,270 +1,348 @@ - + - + &reftitle.constants; &extension.constants.core; - - - Sie können diese Konstanten innerhalb von &php.ini; benutzen, aber nicht - außerhalb von PHP, wie etwa in der &httpd.conf;, wo Sie stattdessen die - Werte der Bitmasken benutzen sollten. - - - - Fehler und Meldungen - - - - Wert - Konstante - &Description; - Bemerkung - - - - - 1 - - E_ERROR - (int) - - - Fatale Laufzeit-Fehler. Dies zeigt Fehler an, die nicht behoben werden - können. Beispielsweise Probleme bei der Speicherzuweisung. Die - Ausführung des Skripts wird abgebrochen. - - - - - 2 - - E_WARNING - (int) - - - Warnungen (keine fatalen Fehler) zur Laufzeit des Skripts. Das Skript - wird nicht abgebrochen. - - - + + Die folgenden Konstanten (entweder die entsprechenden numerischen Werte oder + ihre symbolischen Namen) werden als Bitmasken verwendet, um anzugeben, welche + Fehler gemeldet werden sollen. Es ist möglich, diese Werte mit den + Bit-Operatoren zu + kombinieren oder bestimmte Fehlertypen auszublenden. + - - 4 - - E_PARSE - (int) - - - Parser-Fehler während der Übersetzung. Parser-Fehler können nur vom - Parser erzeugt werden. - - - + + + In der &php.ini; können die Namen der Konstanten anstelle der reinen + numerischen Werte, denen sie entsprechen, verwendet werden. + Innerhalb der &php.ini; werden jedoch nur die Operatoren + |, + ~, + ^, + ! und + & + verstanden. + + - - 8 - - E_NOTICE - (int) - - - Benachrichtigungen während der Laufzeit. Sie zeigen an, dass im Skript - irgendetwas gefunden wurde, was einen Fehler verursachen könnte. Es ist - aber genauso möglich, dass Benachrichtigungen im ordnungsgemäßen Ablauf - eines Skripts ausgegeben werden. - - - + + + Es ist nicht möglich, die symbolischen Namen außerhalb von PHP zu verwenden. + Zum Beispiel muss in der &httpd.conf; stattdessen der berechnete Wert der + Bitmaske verwendet werden. + + - - 16 - - E_CORE_ERROR - (int) - - - Fatale Fehler, die beim Starten von PHP auftreten. Diese sind - ähnlich wie E_ERROR, nur dass diese - Fehlermeldungen vom PHP-Kern erzeugt werden. - - - + + + + E_ERROR + (int) + + + + Fatale Laufzeit-Fehler. + Dies zeigt Fehler an, die nicht behoben werden können, + &zb; Probleme bei der Speicherzuweisung. + Die Ausführung des Skripts wird abgebrochen. + + + Wert der Konstante: 1 + + + - - 32 - - E_CORE_WARNING - (int) - - - Warnungen (keine fatalen Fehler), die beim Starten von PHP - auftreten. Diese sind ähnlich wie E_WARNING, - nur dass diese Warnungen vom PHP-Kern erzeugt werden. - - - + + + E_WARNING + (int) + + + + Warnungen (nicht-fatale Fehler) zur Laufzeit des Skripts. + Die Ausführung des Skripts wird nicht abgebrochen. + + + Wert der Konstante: 2 + + + - - 64 - - E_COMPILE_ERROR - (int) - - - Fatale Fehler zur Übersetzungszeit. Diese sind ähnlich wie - E_ERROR, nur dass diese Fehlermeldungen - von der Zend Scripting Engine erzeugt werden. - - - + + + E_PARSE + (int) + + + + Parser-Fehler während der Übersetzung. + Parser-Fehler können nur vom Parser erzeugt werden. + + + Wert der Konstante: 4 + + + - - 128 - - E_COMPILE_WARNING - (int) - - - Warnungen zur Übersetzungszeit. Diese sind ähnlich wie - E_WARNING, nur dass diese Warnungen - von der Zend Scripting Engine erzeugt werden. - - - + + + E_NOTICE + (int) + + + + Benachrichtigungen während der Laufzeit. Sie zeigen an, dass im Skript + irgendetwas gefunden wurde, was einen Fehler verursachen könnte. Es ist + aber genauso möglich, dass Benachrichtigungen im ordnungsgemäßen Ablauf + eines Skripts ausgegeben werden. + + + Wert der Konstante: 8 + + + - - 256 - - E_USER_ERROR - (int) - - - Benutzerdefinierte Fehlermeldungen. Diese sind ähnlich wie - E_ERROR, nur dass diese Fehlermeldungen - im PHP-Code mit trigger_error erzeugt werden. - - - + + + E_CORE_ERROR + (int) + + + + Fatale Fehler, die beim Starten von PHP auftreten. + Dies ist ähnlich wie E_ERROR, nur dass diese + Fehlermeldungen vom PHP-Kern erzeugt werden. + + + Wert der Konstante: 16 + + + - - 512 - - E_USER_WARNING - (int) - - - Benutzerdefinierte Warnungen. Diese sind ähnlich wie - E_WARNING, nur dass diese Warnungen im PHP-Code mit - trigger_error erzeugt werden. - - - + + + E_CORE_WARNING + (int) + + + + Warnungen (nicht-fatale Fehler), die beim Starten von PHP auftreten. + Dies ist ähnlich wie E_WARNING, nur dass diese + Warnungen vom PHP-Kern erzeugt werden. + + + Wert der Konstante: 32 + + + - - 1024 - - E_USER_NOTICE - (int) - - - Benutzerdefinierte Benachrichtigungen. Diese sind ähnlich wie - E_NOTICE, nur dass diese Benachrichtigungen im - PHP-Code mit trigger_error erzeugt werden. - - - + + + E_COMPILE_ERROR + (int) + + + + Fatale Fehler zur Übersetzungszeit. + Dies ist ähnlich wie E_ERROR, nur dass diese + Fehlermeldungen von der Zend-Scripting-Engine erzeugt werden. + + + Wert der Konstante: 64 + + + - - 2048 - - E_STRICT - (int) - - - Aktivieren Sie diese Einstellung, um von PHP Vorschläge für Änderungen - des Programmcodes zu erhalten, die eine bestmögliche Interoperabilität - und zukünftige Kompatibilität Ihres Codes gewährleisten. - - - + + + E_COMPILE_WARNING + (int) + + + + Warnungen (nicht-fatale Fehler) zur Übersetzungszeit. + Dies ist ähnlich wie E_WARNING, nur dass diese + Warnungen von der Zend Scripting Engine erzeugt werden. + + + Wert der Konstante: 128 + + + - - 4096 - - E_RECOVERABLE_ERROR - (int) - - - Abfangbarer fataler Fehler. Dies bedeutet das ein potentiell - gefährlicher Fehler aufgetreten ist, die Engine aber nicht in einem - instabilen Zustand hinterlassen hat. Wird der Fehler nicht durch eine - benutzerdefinierte Fehlerbehandlungsroutine abgefangen (siehe auch - set_error_handler), so wird die Anwendung wie bei - einem Fehler der Stufe E_ERROR abgebrochen. - - - + + + E_DEPRECATED + (int) + + + + Benachrichtigungen über veralteten Code zur Laufzeit. + Wenn diese Option aktiviert ist, werden Warnungen über Code ausgegeben, + der in zukünftigen Versionen nicht mehr funktionieren wird. + + + Wert der Konstante: 8192 + + + - - 8192 - - E_DEPRECATED - (int) - - - Benachrichtigungen zur Laufzeit des Programms. Aktivieren Sie diese - Einstellung, um Warnungen über Codebestandteile zu erhalten, die in - zukünftigen PHP-Versionen nicht mehr funktionieren werden. - - - + + + E_USER_ERROR + (int) + + + + Benutzerdefinierte Fehlermeldungen. + Dies ist ähnlich wie E_ERROR, nur dass diese + Fehlermeldungen im PHP-Code mit trigger_error erzeugt + werden. + + + Wert der Konstante: 256 + + + + Die Verwendung dieser Konstante mit trigger_error + ist seit PHP 8.4.0 veraltet. + Es wird empfohlen, entweder eine Exception + zu werfen oder stattdessen exit aufzurufen. + + + + - - 16384 - - E_USER_DEPRECATED - (int) - - - Benutzererzeugte Warnmeldung. Diese entspricht - E_DEPRECATED, mit der Ausnahme, dass sie im - PHP-Code durch die Verwendung der Funktion - trigger_error generiert wurde. - - - + + + E_USER_WARNING + (int) + + + + Benutzerdefinierte Warnungen. + Dies ist ähnlich wie E_WARNING, nur dass diese + Warnungen im PHP-Code mit trigger_error erzeugt + werden. + + + Wert der Konstante: 512 + + + - - 32767 - - E_ALL - (int) - - - Alle Fehler, Warnungen und Benachrichtigungen. - - - + + + E_USER_NOTICE + (int) + + + + Benutzerdefinierte Benachrichtigungen. + Dies ist ähnlich wie E_NOTICE, nur dass diese + Benachrichtigungen im PHP-Code mit trigger_error + erzeugt werden. + + + Wert der Konstante: 1024 + + + - - -
+ + + E_USER_DEPRECATED + (int) + + + + Benutzerdefinierte Warnmeldung über veralteten Code. + Dies entspricht E_DEPRECATED, nur dass diese + Benachrichtigungen im PHP-Code mit trigger_error + erzeugt werden. + + + Wert der Konstante: 16384 + + + - - Mit den obengennnten Werten (sowohl numerisch als auch mit den Konstanten) - wird eine Bitmaske erzeugt, die festlegt, welche Fehler angezeigt werden - sollen. Mit den - Bit-Operatoren können Sie - diese Werte kombinieren oder bestimmte Fehlertypen ausblenden. Beachten Sie, - dass innerhalb von &php.ini; jedoch nur '|', '~', '!', '^' und '&' - verstanden werden. - -
+ + + E_STRICT + (int) + + + + Vorschläge, die PHP zur Laufzeit über den ausgeführten Code ausgibt, um + die Aufwärtskompatibilität zu gewährleisten. + + + Wert der Konstante: 2048 + + + + Diese Stufe der Fehlermeldungen wird nicht mehr verwendet und ist seit + PHP 8.4.0 veraltet. + + + + + + + + E_RECOVERABLE_ERROR + (int) + + + + "Exceptions" der Legacy-Engine, die einem abfangbaren fatalen Fehler + entsprechen. + Ähnlich wie Error, aber sie müssen von + einem benutzerdefinierten Fehlerhandler abgefangen werden (siehe + set_error_handler). + Wenn ein solcher Fehler nicht abgefangen wird, verhält er sich wie + E_ERROR. + + + Wert der Konstante: 4096 + + + + Diese Stufe von Fehlermeldungen wird praktisch nicht verwendet. Der + einzige Fall, in dem sie auftreten kann, ist, wenn die Interpretation + eines &object;s als bool fehlschlägt. + Dies kann nur bei internen Objekten vorkommen. + + + Das häufigste Beispiel vor PHP 8.4.0 ist die Verwendung einer + GMP-Instanz in einer Bedingung. + + + + + + + E_ALL + (int) + + + + Eine Bitmaske, die alle Fehler, Warnungen und Hinweise enthält. + + + Wert der Konstante: 32767 + + + + + + - + @@ -52,6 +52,14 @@ der E_USER_*-Familie gewählt werden, der Vorgabewert ist E_USER_NOTICE. + + + Die Übergabe von E_USER_ERROR als + error_level ist nun veraltet. + Stattdessen sollte eine Exception + geworfen oder exit aufgerufen werden. + + @@ -86,6 +94,22 @@
+ + 8.4.0 + + Die Übergabe von E_USER_ERROR als + error_level ist nun veraltet. + Stattdessen sollte eine Exception + geworfen oder exit aufgerufen werden. + + + + 8.4.0 + + Die Funktion hat nun den Rückgabetyp true statt + bool. + + 8.0.0 @@ -111,9 +135,11 @@ ]]> @@ -141,6 +167,7 @@ if ($divisor == 0) { set_error_handler restore_error_handler Die Error Level Konstanten + Das Attribut Deprecated