
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 ReflectionReference
classe 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_split
RFC adicionado
Esta função fornece a mesma funcionalidade str_split
, mas em strings de múltiplos bytes.
ext-hash
sempre 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_dump
uma instânciaDateTime
ouDateTimeImmutable
nã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
PDO
ouPDOStatement
instância gerará um emException
vez de umPDOException
. - Chamar
get_object_vars()
umaArrayObject
instância retornará as propriedades doArrayObject
próprio, e não os valores do array ou objeto empacotado. Observe que os(array)
elencos não são afetados.