## Autres changements

### Changement dans les modules SAPI

#### Apache2Handler

Le module PHP a été renommé de `php7_module` en `php_module`.

### Fonctions changées

#### Reflection

Les résultats de ReflectionClass::getConstants() et ReflectionClass::getReflectionConstants() peuvent maintenant être filtrés avec un nouveau paramètre `filter`. Trois nouvelles constantes ont été ajoutées pour être utilisées avec celui-ci:

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

#### Standard

Les fonctions de math abs(), ceil(), floor() et round() respectent maintenant correctement les directives `strict_types`. Auparavant, elles forçaient le premier argument même en mode de type strict.

#### Zip

- Les méthodes ZipArchive::addGlob() et ZipArchive::addPattern() acceptent plus de valeurs dans le paramètre tableau `options` :

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

- Les méthodes ZipArchive::addEmptyDir(), ZipArchive::addFile() et ZipArchive::addFromString() ont un nouvel argument `flags`. Cela permet de gérer l'encodage des noms (`ZipArchive::FL_ENC_*`) et le remplacement des entrées (`ZipArchive::FL_OVERWRITE`).

- ZipArchive::extractTo() restaure maintenant l'heure de modification du fichier.

### Autres changements aux extensions

#### CURL

- L'extension CURL requiert maintenant au moins libcurl 7.29.0.

- Le paramètre déprécié `version` de curl_version() a été supprimé.

#### Date et heure

DatePeriod implémente maintenant IteratorAggregate (à la place de Traversable).

#### DOM

DOMNamedNodeMap et DOMNodeList implémentent maintenant IteratorAggregate (à la place de Traversable).

#### Intl

IntlBreakIterator et ResourceBundle implémentent maintenant IteratorAggregate (à la place de Traversable).

#### Enchant

L'extension enchant utilise maintenant libenchant-2 par défaut quand disponible. La version 1 de libenchant est toujours supportée mais est dépréciée et pourrait être supprimée dans le futur.

#### GD

- Le paramètre `num_points` de imagepolygon(), imageopenpolygon() et imagefilledpolygon() est maintenant optionnel, par exemple ces fonctions peuvent être appelées avec soit 3 ou 4 arguments. Si l'argument est omis, il est calculé comme `count($points)/2`.

- La fonction imagegetinterpolation() pour obtenir la méthode d'interpolation a été ajoutée.

#### JSON

L'extension JSON ne peut plus être désactivée et est maintenant une partie intégrale de toute construction PHP, similaire à l'extension date.

#### MBString

La table de données Unicode a été mise à jour en version 13.0.0.

#### PDO

PDOStatement implémente maintenant IteratorAggregate (à la place de Traversable).

#### LibXML

La version minimum requise de libxml est maintenant 2.9.0. Cela signifie que le chargement d'entités externes est maintenant garanti d'être désactivé par défaut, et aucune étape supplémentaire n'est nécessaire pour se protéger contre les attaques XXE.

#### MySQLi / PDO MySQL

- Lorsque mysqlnd n'est pas utilisé (ce qui est l'option recommandée par défaut), la version minimum supportée de libmysqlclient est maintenant 5.5.

- mysqli_result implémente maintenant IteratorAggregate (à la place de Traversable).

#### PGSQL / PDO PGSQL

Les extensions PGSQL et PDO PGSQL requièrent maintenant au moins libpq 9.1.

#### Readline

Appeler readline_completion_function() avant que l'invite interactive ne commence (par exemple dans auto_prepend_file) remplacera maintenant la fonction de complétion par défaut de l'invite interactive. Auparavant, readline_completion_function() ne fonctionnait que lorsqu'elle était appelée après le démarrage de l'invite interactive.

#### SimpleXML

SimpleXMLElement implémente maintenant RecursiveIterator et a absorbé la fonctionnalité de SimpleXMLIterator. SimpleXMLIterator est une extension vide de SimpleXMLElement.

### Changement de la gestion du fichier INI

- com.dotnet_version est une nouvelle directive INI pour choisir la version du framework .NET à utiliser pour les objets dotnet.

- zend.exception_string_param_max_len est une nouvelle directive INI pour changer la longueur maximum d'une chaîne de caractères dans un argument d'une trace d'appels transformée en chaîne de caractères.

### EBCDIC

Les cibles EBCDIC ne sont plus supportées, bien qu'il soit peu probable qu'elles fonctionnaient encore.

### Performances

- Un compilateur à la volée (Just-In-Time ou JIT) a été ajouté à l'extension opcache.

- array_slice() sur un tableau sans trou ne scanne plus l'entièreté du tableau pour trouver l'écart de départ. Cela peut réduire significativement le temps d'exécution de la fonction avec de grands écarts et de petites longueurs.

- strtolower() utilise maintenant une implémentation SIMD quand la locale `"C"` `LC_CTYPE` est utilisée (qui est celle par défaut).

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