## Sonstige Änderungen

### Meldungen und Warnungen bei Rechenoperationen mit ungültigen Zeichenketten

Es wurden neue Fehler der Stufen `E_WARNING` und `E_NOTICE` hinzugefügt, die ausgelöst werden, wenn mit Operatoren, die Zahlen erwarten (`+` `-` `*` `/` `**` `%` `<<` `>>` `|` `&` `^`) oder mit deren entsprechenden Zuweisungen ungültige Zeichenketten erzwungen werden. Ein Fehler der Stufe `E_NOTICE` wird ausgelöst, wenn eine Zeichenkette mit einem numerischen Wert beginnt, aber nachfolgende nicht-numerische Zeichen enthält, und ein Fehler der Stufe `E_WARNING` wird ausgelöst, wenn eine Zeichenkette keinen numerischen Wert enthält.

`<?php
'1b' + 'something';`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Notice: A non well formed numeric value encountered in %s on line %d
    Warning: A non-numeric value encountered in %s on line %d

### Warnung beim Überlauf einer oktalen Maskierungs-Sequenz

Bisher wurde keine Warnung ausgegeben, wenn eine Maskierungs-Sequenz in oktaler Notation überlief. Nun läuft sie immer noch über, löst aber in diesem Fall einen Fehler der Stufe `E_WARNING` aus.

`<?php
var_dump("\500");`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
    string(1) "@"

### Unstimmigkeiten bei `$this` behoben

Während `$this` in PHP als spezielle Variable betrachtet wird, fehlte es an geeigneten Überprüfungen, um sicherzustellen, dass es nicht als Variablenname verwendet oder neu zugewiesen wird. Dies wurde nun korrigiert, sodass `$this` keine benutzerdefinierte Variable mehr sein kann, keinen anderern Wert zugewiesen bekommt und nicht mehr globalisiert werden kann.

### Erzeugung von Session-IDs ohne Hashing

Session-IDs werden bei der Erzeugung nicht mehr gehasht. Wegen dieser Änderung wurden die folgenden vier INI-Einstellungen entfernt:

- `session.entropy_file`
- `session.entropy_length`
- `session.hash_function`
- `session.hash_bits_per_character`

Außerdem wurden die folgenden zwei neuen INI-Einstellungen hinzugefügt:

- `session.sid_length` - definiert die Länge der Session-ID. Aus Gründen der Abwärtskompatibilität ist der Standardwert 32 Zeichen.
- `session.sid_bits_per_character` - definiert die Anzahl von Bits, die pro Zeichen gespeichert werden sollen (d. h. mit diesem Wert kann der für die Session-ID zulässige Wertebereich erlaubter Zeichen erhöht werden). Aus Gründen der Abwärtskompatibilität ist der Standardwert 4.

### Änderungen bei der Handhabung von INI-Dateien

`precision`

  Wenn der Wert auf -1 gesetzt wird, dann wird der dtoa-Modus 0 verwendet. Der Standardwert ist weiterhin 14.

`serialize_precision`

  Wenn der Wert auf -1 gesetzt wird, dann wird der dtoa-Modus 0 verwendet. Der Standardwert ist nun -1.

`gd.jpeg_ignore_warning`

  Der Standardwert für diese php.ini-Einstellung wurde auf 1 geändert, sodass libjpeg-Warnungen in der Standardeinstellung ignoriert werden.

`opcache.enable_cli`

  Der Standardwert für diese php.ini-Einstellung wurde in PHP 7.1.2 auf 1 (aktiviert) gesetzt und in PHP 7.1.7 wieder auf 0 (deaktiviert).

### Erzeugung der Session-ID nur mit einem CSPRNG

Session-IDs werden nun nur noch mit einem CSPRNG erzeugt.

### Aussagekräftigere TypeError-Meldungen, wenn `null` erlaubt ist

Bei Typüberprüfungen durch arg_info geben TypeError-Exceptions nun aussagekräftigere Fehlermeldungen aus. Wenn der Parametertyp oder der Rückgabetyp `null` akzeptiert (indem er entweder einen Standardwert von `null` hat oder ein nullable-Typ ist), dann wird dies nun in der Fehlermeldung mit einem Hinweis wie "must be ... or null" oder "must ... or be null" erwähnt.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open