Novas funcionalidades

Novo tipo: object

Um novo tipo, object, foi introduzido e pode ser usado para tipagem de parâmetro (contravariante) e tipagem de retorno (covariante) de qualquer objeto.

<?php

function test(object $obj) : object
{
return new
SplQueue();
}

test(new stdClass());

Carregamento de extensão por nome

Extensões compartilhadas não requerem mais que as extensões de arquivo (.so para Unix ou .dll para Windows) sejam especificadas. Isto está habilitado no arquivo php.ini, assim como na função dl().

Substituição de método abstrato

Métodos abstratos agora podem ser substituídos quando uma classe abstrata estende outra classe abstrata.

<?php

abstract class A
{
abstract function
test(string $s);
}
abstract class
B extends A
{
// substituído - ainda mantendo contravariância para parâmetros e covariância para retorno
abstract function test($s) : int;
}

Sodium agora é uma extensão do núcleo

A moderna biblioteca de criptografia Sodium agora se tornou uma extensão do núcleo do PHP.

Para uma referência completa da função consulte o capítulo Sodium.

Hash de senha com Argon2

Argon2 foi adicionado à API de hash de senha, onde as seguintes constantes foram expostas:

  • PASSWORD_ARGON2I
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_THREADS

Tipos estendidos de strings para PDO

O tipo string da PDO foi estendido para suportar o tipo de caractere nacional ao emular preparações. Isto foi feito com as seguintes constantes:

  • PDO::PARAM_STR_NATL
  • PDO::PARAM_STR_CHAR
  • PDO::ATTR_DEFAULT_STR_PARAM

Estas constantes são utilizadas com a operação binária OR entre elas e a constante PDO::PARAM_STR:

<?php

$db
->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);

Informação adicional de depuração de preparações emuladas para PDO

O método PDOStatement::debugDumpParams() foi atualizado para incluir o SQL enviado ao BD, onde a consulta completa, crua, (incluindo os marcadores substituídos com seus valores vinculados) será mostrada. Isto foi adicionado para ajudar na depuração de preparações emuladas (e por isso só estará disponível se preparações emuladas estiverem habilitadas).

Suporte para operações estendidas em LDAP

Suporte para EXOP foi adicionado à extensão LDAP. Isto foi feito pela exposição das seguintes funções e contantes:

Adição de informação de endereço à extensão Sockets

A extensão sockets agora tem a capacidade de procurar por Informação de Endereço, assim como se conectar, vincular e explicar. As quatro funções a seguir foram adicionadas para isto:

Ampliação de tipo de parâmetro

Tipos de parâmetro de métodos substituídos e de implementações de interface agora podem ser omitidos. Isto ainda está conforme LSP, já que os tipos de parâmetros são contravariantes.

<?php

interface A
{
public function
Test(array $input);
}

class
B implements A
{
public function
Test($input){} // tipo omitido para $input
}

Permite-se uma vírgula no final de espaços de nomes agrupados

Uma vírgula agora pode ser adicionada ao final do grupo na sintaxe 'use' introduzida no PHP 7.0.

<?php

use Foo\Bar\{
Foo,
Bar,
Baz,
};

Suporte à função proc_nice() no Windows

A função proc_nice() agora é suportada no Windows.

Suporte à ordem de bytes nas funções pack() e unpack()

As funções pack() e unpack() agora suportam tipos 'float' e 'double' em ambas as ordens de bytes Little Endian e Big Endian.

Melhorias à extensão EXIF

A extensão EXIF foi atualizada para suportar uma faixa de formatos bem maior. Isto significa que suas etiquetas específicas de formatação agora são adequadamente traduzidas ao analisar imagens com a função exif_read_data(). Os formatos a seguir agora são suportados:

  • Samsung
  • DJI
  • Panasonic
  • Sony
  • Pentax
  • Minolta
  • Sigma/Foveon
  • AGFA
  • Kyocera
  • Ricoh
  • Epson

As funções EXIF exif_read_data() e exif_thumbnail() agora suportam fluxos como seu primeiro argumento.

Novas funcionalidades em PCRE

  • O modificador J para configurar PCRE_DUPNAMES foi adicionado.

SQLite3 permite escrever BLOBs

SQLite3::openBlob() agora permite abrir campos BLOB fields em modo de escrita; anteriormente apenas leitura era suportada.

Chamadas TAF (Transparent Application Failover) do Oracle OCI8

Suporte às chamadas de Falha Transparente de Aplicação do Banco de Dados Oracle foi adicionado. TAF permite que aplicações OCI8 do PHP OCI8 se reconectem automaticamente a um banco de dados pré-configurado quando uma conexão é perdida. O novo suporte à chamada TAF permite que aplicações PHP monitorem e controlem a reconexão durante a falha.

Melhorias à extensão ZIP

Suporte foi adicionado a leitura e escrita de arquivos criptografados (requer libzip 1.2.0).

A classe ZipArchive agora implementa a interface Countable.

O fluxo zip:// agora aceita uma opção de contexto 'password'.

add a note add a note

User Contributed Notes 2 notes

up
3
antonfedonyuk at gmail dot com
3 years ago
Note: "omitted" = "removed":
<?php
declare(strict_types=1);

interface
ITest
{
    public function
run(array $input);
}

class
Test implements ITest
{
    public function
run($input) {
       return
$input;
   }
}

echo (new
Test())->run('foo'); // display foo, no error
?>
up
-3
info at ensostudio dot ru
4 years ago
Note: you cant change parameter type for abstract method defined in interface.
<?php
abstract class AbstractAssocArray imlements ArrayAccess
{
    abstract public function
offsetSet($offset, $value): void;
    ...
}
abstract class
AbstractAssocArray2 extends AbstractAssocArray
{
    abstract public function
offsetSet(string $offset, $value): void;
}
class
AssocArray extends AbstractAssocArray2
{
    public function
offsetSet(string $offset, $value): void
   
{
        
$this->{$offset} = $value;
    }
}
?>
It's throw fatal error: Declaration of AbstractAssocArray::offsetSet(string $offset, $value): void must be compatible with AbstractAssocArrayAccess::offsetSet($offset, $value).
To Top