## Outras mudanças

### Alterações nos Módulos SAPI

#### Apache2Handler

O módulo PHP foi renomeado de `php7_module` para `php_module`.

### Funções alteradas

#### Reflection

Os resultados de ReflectionClass::getConstants() e ReflectionClass::getReflectionConstants() agora podem ser filtrados por meio de um novo `filter` de parâmetro. Três novas constantes foram adicionadas para serem usadas com ele:

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

#### Padrão

As funções matemáticas abs(), ceil(), floor() e round() agora atendem adequadamente à diretiva `strict_types`. Anteriormente, eles coagiam o primeiro argumento mesmo no modo de tipo estrito.

#### Zip

- Os métodos ZipArchive::addGlob() e ZipArchive::addPattern() aceitam mais valores no argumento do array de `options`:

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

- Os métodos ZipArchive::addEmptyDir(), ZipArchive::addFile() e ZipArchive::addFromString() possuem um novo argumento `flags`. Isso permite gerenciar a codificação de nomes (`ZipArchive::FL_ENC_*`) e a substituição de entradas (`ZipArchive::FL_OVERWRITE`).

- ZipArchive::extractTo() agora restaura o tempo de modificação do arquivo.

### Outras alterações nas extensões

#### CURL

- A extensão CURL agora requer pelo menos libcurl 7.29.0.

- O parâmetro descontinuado `version` de curl_version() foi removido.

#### Data e Horário

DatePeriod agora implementa IteratorAggregate (em vez de Traversable).

#### DOM

DOMNamedNodeMap e DOMNodeList agora implementam IteratorAggregate (em vez de Traversable).

#### Intl

IntlBreakIterator e ResourceBundle agora implementam IteratorAggregate (em vez de Traversable).

#### Enchant

A extensão enchant agora usa libenchant-2 por padrão quando disponível. libenchant versão 1 ainda é suportada, mas foi descontinuada e pode ser removida no futuro.

#### GD

- O parâmetro `num_points` de imagepolygon(), imageopenpolygon() e imagefilledpolygon() agora é opcional, ou seja, essas funções podem ser chamadas com 3 ou 4 argumentos. Se o argumento for omitido, será calculado como `count($points)/2`.

- A função imagegetinterpolation() para obter o método de interpolação atual foi adicionada.

#### JSON

A extensão JSON não pode mais ser desativada e é sempre parte integrante de qualquer compilação do PHP, semelhante à extensão de data.

#### MBString

As tabelas de dados Unicode foram atualizadas para a versão 13.0.0.

#### PDO

PDOStatement agora implementa IteratorAggregate (em vez de Traversable).

#### LibXML

A versão mínima necessária do libxml agora é 2.9.0. Isso significa que o carregamento de entidade externa agora está desativado por padrão e nenhuma etapa extra precisa ser tomada para proteger contra ataques XXE.

#### MySQLi / PDO MySQL

- Quando mysqlnd não é usado (que é a opção padrão e recomendada), a versão mínima suportada do libmysqlclient agora é 5.5.

- mysqli_result agora implementa IteratorAggregate (ao invés de Traversable).

#### PGSQL / PDO PGSQL

As extensões PGSQL e PDO PGSQL agora requerem pelo menos libpq 9.1.

#### Readline

Chamar readline_completion_function() antes do início do prompt interativo (por exemplo, em auto_prepend_file) agora substituirá a função padrão de conclusão do prompt interativo. Anteriormente, readline_completion_function() só funcionava quando chamado após iniciar o prompt interativo.

#### SimpleXML

SimpleXMLElement agora implementa RecursiveIterator e absorveu a funcionalidade de SimpleXMLIterator. SimpleXMLIterator é uma extensão vazia de SimpleXMLElement.

### Alterações na manipulação de arquivos INI

- com.dotnet_version é uma nova diretiva INI para escolher a versão da estrutura .NET a ser usada para objetos dotnet.

- zend.exception_string_param_max_len é uma nova diretiva INI para definir o comprimento máximo da string em um argumento de uma string de pilha stringificada.

### EBCDIC

Os destinos EBCDIC não são mais suportados, embora seja improvável que ainda estivessem funcionando.

### Desempenho

- Um compilador Just-In-Time (JIT) foi adicionado à extensão opcache.

- array_slice() em um array sem lacunas não irá mais varrer todo o array para encontrar a posição inicial. Isso pode reduzir significativamente o tempo de execução da função com grandes deslocamentos e pequenos comprimentos.

- strtolower() agora usa uma implementação SIMD ao usar a localidade `LC_CTYPE` `"C"` (que é o padrão).

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