Apresentado o primeiro lançamento alfa da nova versão da linguagem de programação PHP 8.4. O lançamento está previsto para 21 de novembro. As principais novidades, já disponíveis para teste ou planejadas para implementação no PHP 8.4:
- Adicionada a suporte para manipuladores de propriedades (property hook), permitindo adicionar lógica adicional executada ao modificar ou acessar propriedades de objeto, implementado sem a interceptação das operações de leitura e gravação através das funções comuns __get e __set, e sem a necessidade de criar métodos de encapsulamento adicionais. O uso de manipuladores de propriedades permite reduzir significativamente o volume de código e simplificar a redefinição do comportamento ao trabalhar com propriedades, conectando um manipulador próprio a cada propriedade. class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError("Name must be non-empty"); } $this->name = $value; } } public function __construct(string $name) { $this->name = $name; } }
- Agora é permitido especificar referências a métodos na construção "new" sem parênteses separadores, ou seja, em vez de "name = (new MyClass())->method()" agora pode-se especificar "name = new MyClass()->method()".
- Em vez do parâmetro geral "opcache.jit_buffer_size" para controlar o compilador JIT e ajustar o tamanho do buffer JIT, agora são oferecidos os parâmetros "opcache.jit" e "opcache.jit_buffer_size". Para desativar o JIT, agora pode-se especificar "opcache.jit=disable" em vez de "opcache.jit_buffer_size=0". Além disso, foram realizadas alterações que reduzem o consumo de memória e aumentam o desempenho do JIT em algumas situações.
- Comportamento obsoleto foi declarado, onde para parâmetros de funções com valor padrão atribuído como null, automaticamente era permitido atribuir valores null. Agora, para que tais parâmetros possam aceitar valores null, é necessária uma indicação explícita do prefixo "?". Por exemplo, em vez de "function save(Book $book = null) {}", deve-se especificar "function save(?Book $book = null) {}".
- Implementada a classe \Dom\HTMLDocument, suportando a análise correta de marcação HTML5.
- Adicionada a função request_parse_body() para análise de requisições HTTP com tipo de conteúdo multipart/form-data (RFC1867).
Fonte: opennet.ru
