Aguarde...

12 de fevereiro de 2019

Novo no PHP 7.4

Novo no PHP 7.4

O PHP 7.4 provavelmente será lançado em algum lugar em dezembro de 2019. Esta página receberá atualizações regulares enquanto isso. Última atualização em 14 de janeiro de 2019

Preloading rfc

O pré-carregamento é uma adição incrível ao núcleo do PHP, o que pode resultar em algumas melhorias importantes no desempenho.

Resumindo: se você está usando uma estrutura hoje, seus arquivos precisam ser carregados e recompilados em todas as solicitações. O pré-carregamento permite que o servidor carregue arquivos PHP na memória durante a inicialização e os disponibilize permanentemente para todas as solicitações subsequentes.

O ganho de desempenho vem naturalmente com um custo: se a fonte dos arquivos pré-carregados for alterada, o servidor deve ser reiniciado.

Propriedades digitadas rfc

Variáveis ​​de classe podem ser insinuadas:

class A
{
    public string $name;
    
    public Foo $foo;
}

Atualização 07-01: A partir de agora, as propriedades digitadas são mescladas e, portanto, confirmadas para o PHP 7.4.

Variância de tipo aprimorada rfc

Eu escrevi sobre o sistema de tipos do PHP no passado , então é bom ver algumas melhorias chegando ao núcleo do PHP.

Tipo de variação é um tópico que vale seu próprio post no blog; em suma: você poderá usar tipos de retorno covariantes…

class ParentType {}
class ChildType extends ParentType {}

class A
{
    public function covariantReturnTypes(): ParentType
    { /* … */ }
}

class B extends A
{
    public function covariantReturnTypes(): ChildType
    { /* … */ }
}

… E argumentos contravariantes.

class A
{
    public function contraVariantArguments(ChildType $type)
    { /* … */ }
}

class B extends A
{
    public function contraVariantArguments(ParentType $type)
    { /* … */ }
}

Atualização 14-01: O RFC está atualmente na fase de votação, mas parece que vai passar sem problemas.

Interface de Função Externa rfc

Interface de Função Estrangeira, FFI em resumo, permite chamar o código C da terra do usuário. Isso significa que as extensões PHP podem ser escritas em PHP puro.

Deve-se notar que este é um tópico complexo. Você ainda precisa do conhecimento C para poder usar corretamente esse recurso.

Operador de Atribuição de Coalescência Nula rfc

Em vez de fazer isso:

$data['date'] = $data['date'] ?? new DateTime();

Você consegue fazer isso:

$data['date'] ??= new DateTime();

Atualização 22-01: este recurso está agora mesclado no PHP 7.4.

Reflexão para referências rfc

Bibliotecas como o dumper var do Symfony dependem fortemente da API de reflexão para despejar uma variável de forma confiável. Anteriormente, nenhum suporte de reflexão adequado para referências estava disponível, fazendo com que essas bibliotecas dependessem de hacks para detectar referências.

O PHP 7.4 adiciona a ReflectionReferenceclasse que resolve esse problema.

Atualização 02-14: o RFC passou e as mudanças estão confirmadas para o PHP 7.4.

mb_str_splitRFC adicionado

Esta função fornece a mesma funcionalidade str_split, mas em strings de múltiplos bytes.

ext-hashsempre habilitado rfc

Como o título diz, esta extensão está agora permanentemente disponível em todas as instalações do PHP.

PEAR não habilitado por padrão EXTERNALS

Como o PEAR não é mais mantido ativamente, a equipe principal decidiu remover sua instalação padrão com o PHP 7.4.

RFC de Registro de Hashing de Senha

Mudanças internas em como as bibliotecas de hashing são usadas, para que seja mais fácil para o usuário usar essas bibliotecas.

Deprecate ext/wwdx RFC

Esse formato de troca de dados nunca foi padronizado e, agora, sua extensão foi descontinuada.

Alterações incompatíveis com versões anteriores ATUALIZANDO

Você deve sempre dar uma olhada no documento UPGRADING completo ao atualizar versões do PHP.

Aqui estão algumas das alterações incompatíveis com versões anteriores destacadas:

  • Fazer referência parent::em uma classe sem pai gera um erro em tempo de compilação em vez de um erro em tempo de execução.
  • Chamar var_dumpuma instância DateTimeou DateTimeImmutablenão deixará mais propriedades acessíveis no objeto.
  • openssl_random_pseudo_bytes irá lançar uma exceção em situações de erro.
  • A tentativa de serializar um PDOou PDOStatementinstância gerará um em Exceptionvez de um PDOException.
  • Chamar get_object_vars()uma ArrayObjectinstância retornará as propriedades do ArrayObjectpróprio, e não os valores do array ou objeto empacotado. Observe que os (array)elencos não são afetados.
Postado em BlogTags:
Escreva um comentário