## Sonstige Änderungen

### Änderungen in SAPI-Modulen

#### Apache2Handler

Das PHP-Modul wurde von `php7_module` in `php_module` umbenannt.

### Geänderte Funktionen

#### Reflection

Die Ergebnisse von ReflectionClass::getReflectionConstants() können nun mit dem neuen Parameter `filter` gefiltert werden. Drei neue Konstanten wurden hinzugefügt, die damit verwendet werden können:

- `ReflectionClassConstant::IS_PUBLIC`
- `ReflectionClassConstant::IS_PROTECTED`
- `ReflectionClassConstant::IS_PRIVATE`

#### Standard

Die mathematischen Funktionen abs(), ceil(), floor() und round() berücksichtigen die Direktive `strict_types` nun korrekt. Zuvor wurde der erste Parameter auch im strikten Typisierungsmodus erzwungen.

#### Zip

- Die Methoden ZipArchive::addGlob() und ZipArchive::addPattern() akzeptieren mehr Werte im Parameter-Array `options`:

  - `flags`
  - `comp_method`
  - `comp_flags`
  - `env_method`
  - `enc_password`

- Die Methoden ZipArchiv::addEmptyDir(), ZipArchiv::addFile() und ZipArchive::addFromString() haben den neuen Parameter `flags`. Damit können die Namenskodierung (`ZipArchive::FL_ENC_*`) und die Ersetzung von Einträgen (`ZipArchive::FL_OVERWRITE`) verwaltet werden.

- Die Methode ZipArchive::extractTo() stellt nun die Änderungszeit der Dateien wieder her.

### Sonstige Änderungen bei Erweiterungen

#### CURL

- Die Erweiterung CURL benötigt jetzt mindestens libcurl 7.29.0.

- Der veraltete Parameter `version` der Funktion curl_version() wurde entfernt.

#### Datum und Zeit

Die Klasse DatePeriod implementiert nun IteratorAggregate anstelle von Traversable.

#### DOM

Die Klassen DOMNamedNodeMap und DOMNodeList implementieren nun IteratorAggregate anstelle von Traversable.

#### Intl

Die Klassen IntlBreakIterator und ResourceBundle implementieren nun IteratorAggregate anstelle von Traversable.

#### Enchant

Die Erweiterung enchant verwendet nun standardmäßig libenchant-2, falls verfügbar. libenchant Version 1 wird noch unterstützt, ist aber veraltet und könnte in Zukunft entfernt werden.

#### GD

- Der Parameter `num_points` der Funktionen imagepolygon(), imageopenpolygon() und imagefilledpolygon() ist nun optional, d. h. diese Funktionen können nun entweder mit 3 oder mit 4 Parametern aufgerufen werden. Falls der Parameter weggelassen wird, wird er anhand von `count($points)/2` berechnet.

- Die Funktion imagegetinterpolation() wurde hinzugefügt, um die aktuelle Interpolationsmethode zu ermitteln.

#### JSON

Die Erweiterung JSON kann nicht mehr deaktiviert werden und ist immer ein integraler Bestandteil eines jeden PHP-Builds, ähnlich wie die Erweiterung date.

#### MBString

Die Unicode-Datentabellen wurden auf Version 13.0.0 aktualisiert.

#### PDO

PDOStatement implementiert nun IteratorAggregate anstelle von Traversable.

#### LibXML

Die minimal erforderliche libxml-Version ist nun 2.9.0. Dies bedeutet, dass das Laden von externen Entities nun garantiert standardmäßig deaktiviert ist und keine zusätzlichen Maßnahmen zum Schutz vor XXE-Angriffen ergriffen werden müssen.

#### MySQLi / PDO-MySQL

- Wenn mysqlnd nicht verwendet wird (dies ist die standardmäßige und empfohlene Option), ist die niedrigste unterstützte libmysqlclient-Version nun 5.5.

- mysqli_result implementiert nun IteratorAggregate anstelle von Traversable.

#### PGSQL / PDO-PGSQL

Die Erweiterungen PGSQL und PDO-PGSQL benötigen nun mindestens libpq 9.1.

#### Readline

Der Aufruf von readline_completion_function() vor dem Start der interaktiven Eingabeaufforderung (z. B. in auto_prepend_file) überschreibt nun die standardmäßige Vervollständigungs-Funktion der interaktiven Eingabeaufforderung. Zuvor funktionierte readline_completion_function() nur, wenn sie nach dem Start der interaktiven Eingabeaufforderung aufgerufen wurde.

#### SimpleXML

SimpleXMLElement implementiert nun RecursiveIterator und übernimmt die Funktionalität von SimpleXMLIterator. SimpleXMLIterator ist eine leere Erweiterung von SimpleXMLElement.

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

- com.dotnet_version ist eine neue INI-Direktive, um die Version des .NET-Frameworks festzulegen, das für dotnet-Objekte verwendet wird.

- zend.exception_string_param_max_len ist eine neue INI-Direktive, um die maximale Länge einer Zeichenkette in einem Parameter eines stringifizierten Stackstraces festzulegen.

### EBCDIC

EBCDIC-Targets werden nicht mehr unterstützt, wobei es eher unwahrscheinlich ist, dass sie überhaupt noch funktionieren.

### Performance

- Der Erweiterung opcache wurde ein Just-In-Time- (JIT) Compiler hinzugefügt.

- Die Funktion array_slice() durchsucht bei einem Array ohne Lücken nicht mehr das gesamte Array, um den Start-Offset zu finden. Dies kann die Laufzeit der Funktion bei großen Offsets und kleinen Längen erheblich reduzieren.

- Wenn die Locale von `LC_CTYPE` `"C"` ist (was der Standard ist), verwendet die Funktion strtolower() nun die SIMD-Implementierung.

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