O teste alfa do PHP 8.2 começou

Foi apresentada a primeira versão alfa do novo ramo da linguagem de programação PHP 8.2. O lançamento está previsto para 24 de novembro. As principais inovações já disponíveis para testes ou planejadas para implementação no PHP 8.2:

  • Добавлены отдельные типы «false» и «null», которые могут использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • Adicionada a capacidade de marcar uma classe como somente leitura. As propriedades nessas classes podem ser definidas apenas uma vez, após o que não estarão disponíveis para alteração. Anteriormente, as propriedades de classe individuais podiam ser marcadas como somente leitura, mas agora você pode ativar esse modo para todas as propriedades de classe de uma só vez. Especificar o sinalizador "somente leitura" no nível da classe também bloqueia a adição dinâmica de propriedades à classe. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->desconhecido = 'errado'; // Erro: Não é possível criar a propriedade dinâmica Post::$unknown
  • Объявлена устаревшей возможность динамического создания свойств в классе (как «post->unknown» в примере выше). В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут «#[AllowDynamicProperties]», разрешающий использование динамических свойств.
  • Forneceu a capacidade de filtrar configurações confidenciais na saída de rastreamento de pilha no momento de um erro. Cortar certas informações pode ser necessário quando informações sobre erros que ocorrem são enviadas automaticamente para serviços de terceiros que rastreiam problemas e informam os desenvolvedores sobre eles. Por exemplo, você pode excluir parâmetros do rastreamento que incluem nomes de usuários, senhas e variáveis ​​de ambiente. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } teste('foo', 'senha', 'baz'); Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} lançado em test.php on-line 8
  • A capacidade de substituir valores de variáveis ​​em strings usando as expressões "${var}" e ${(var)}" foi descontinuada. O suporte para as substituições "{$var}" e "$var" comumente usadas foi mantido. Por exemplo: "Olá {$mundo}"; OK "Olá $mundo"; OK "Olá ${mundo}"; Obsoleto: o uso de ${} em strings está obsoleto
  • Callables parcialmente suportados que podem ser chamados via "call_user_func($callable)" foram obsoletos, mas não suportam chamadas no formato "$callable()": "self::method" "parent::method" "static :: method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar: :method "]
  • Conversão de caso independente de localidade implementada. Funções como strtolower() e strtoupper() agora sempre convertem as maiúsculas e minúsculas dos caracteres no intervalo ASCII, como ao definir a localidade como "C".

Fonte: opennet.ru

Adicionar um comentário