PHP 8.3: Novidades e mudanças

PHP 8.3: Novidades e mudanças

O PHP 8.3 foi lançado em 23 de novembro de 2023, e traz uma série de novidades e mudanças para a linguagem. Entre as principais novidades estão:

  • Constantes de classe tipadas
  • Função json_validate()
  • Suporte a constante de classe e membro de enum dinâmico

Além dessas novidades, o PHP 8.3 também inclui algumas mudanças na sintaxe e na funcionalidade da linguagem.

Constantes de classe tipadas

Uma das principais novidades do PHP 8.3 são as constantes de classe tipadas. Constantes de classe são valores que são definidos na definição da classe e podem ser acessadas por todas as instâncias da classe. Com as constantes de classe tipadas, é possível especificar o tipo do valor da constante. Isso pode ajudar a melhorar a segurança e a legibilidade do código.

Por exemplo, a seguinte constante de classe não tipada pode ser usada para armazenar o número de registros em uma tabela:

PHP
class User {
    public const RECORDS_COUNT = 1000;
}

Com o PHP 8.3, é possível tornar essa constante tipada como um inteiro:

PHP
class User {
    public const RECORDS_COUNT: int = 1000;
}

Isso torna o código mais claro e evita erros de tipo.

Função json_validate()

Outra novidade importante do PHP 8.3 é a função json_validate(). Essa função permite validar um objeto JSON contra um esquema JSON. Isso pode ser útil para verificar a validade de dados recebidos de uma API ou de um formulário.

A função json_validate() recebe dois argumentos: o primeiro argumento é o objeto JSON a ser validado, e o segundo argumento é o esquema JSON contra o qual o objeto será validado.

Por exemplo, a seguinte função valida um objeto JSON contra um esquema JSON que especifica que o objeto deve ter um atributo name do tipo string:

PHP
function validateJson($json, $schema) {
    return json_validate($json, $schema);
}

Suporte a constante de classe e membro de enum dinâmico

O PHP 8.3 também inclui suporte a constante de classe e membro de enum dinâmico. Isso significa que é possível acessar uma constante de classe ou um membro de enum sem saber o nome da constante ou do membro.

Para acessar uma constante de classe dinamicamente, use o operador :: com o nome da classe e o nome da constante. Por exemplo, a seguinte expressão acessa a constante RECORDS_COUNT da classe User:

PHP
$user = new User();
$count = User::RECORDS_COUNT;

Para acessar um membro de enum dinamicamente, use o operador :: com o nome do enum e o nome do membro. Por exemplo, a seguinte expressão acessa o membro RED do enum Color:

PHP
$color = Color::RED;

Mudanças na sintaxe e na funcionalidade

Além das novidades mencionadas acima, o PHP 8.3 também inclui algumas mudanças na sintaxe e na funcionalidade da linguagem. Entre essas mudanças estão:

  • Upgrade de E_NOTICE para E_WARNING em unserialize()
  • Mudanças no output HTML de highlight_file() e highlight_string()

Upgrade de E_NOTICE para E_WARNING em unserialize()

A função unserialize() é usada para desserializar dados JSON ou de uma string para um objeto. No PHP 8.3, os erros E_NOTICE gerados pela função unserialize() são atualizados para E_WARNING.

Isso significa que esses erros não serão mais ignorados por padrão. Para ignorar os erros E_WARNING gerados pela função unserialize(), use o parâmetro flags da função error_reporting().

Mudanças no output HTML de highlight_file() e highlight_string()

As funções highlight_file() e highlight_string() são usadas para destacar código-fonte em HTML. No PHP 8.3, o output HTML dessas funções foi alterado para usar a tag code.

Isso torna o código destacado mais acessível a leitores de tela e outros dispositivos de acessibilidade.

Conclusão

O PHP 8.3 é uma atualização importante da linguagem que traz uma série de novidades e mudanças. Essas novidades podem ajudar a melhorar a segurança

Partilhe com o seus
Open chat
Olá 👋
Tire as suas duvidas por aqui!