PHP 8.2 perde ferramentas obsoletas e ganha outras mais modernas

Chegou hoje o principal lançamento do ano da popular linguagem de programação para desenvolvimento web de backend, o PHP 8.2!

Classes para apenas leitura

As propriedades de apenas leitura foram introduzidas no PHP 8.1, mas agora foi adiciona uma facilidade sintática onde em vez de escrever isso:

class Post
{
    public function __construct(
        public readonly string $title, 
        public readonly Author $author,
        public readonly string $body,
        public readonly DateTime $publishedAt,
    ) {}
}

Podemos escrever isso:

readonly class Post
{
    public function __construct(
        public string $title, 
        public Author $author,
        public string $body,
        public DateTime $publishedAt,
    ) {}
}

Repare que em vez de escrever readonly em todas as variáveis, basta definir a propriedade diretamente na classe.

Propriedades dinâmicas

Este aqui pode render a refatoração de alguns códigos: as propriedades dinâmicas agora estão obsoletas e quando lançar o PHP 9, elas não funcionarão mais. Entretanto, classes que implementam __get e __set continuarão funcionando.

Extensões de aleatoriedade

O PHP 8.2 adiciona um novo gerador de números aleatórios que corrige vários problemas do anterior: Ele é mais performático, mais seguro, fácil de manter e não depende de uma declaração global, além de diminuir a dificuldade de detectar bugs.

Também há uma nova classe chamada Randomizer, que é personalizável e permite tornar qualquer coisa aleatória com facilidade.

Mais segurança no Debug

É uma prática comum submeter o código a programas de terceiros que procuram por erros. Este tipo de programa é denominado debugger, mas isto pode comprometer dados sensíveis como senhas, nome de usuário ou outras informações confidenciais, sendo um grande problema de segurança.

Por isso, o PHP 8.2 introduz o atributo sensitive parameters, que esconde as informações sensíveis de possíveis debuggers maliciosos. Eis um exemplo de como utilizar:

function login(
    string $user,
    #[\SensitiveParameter] string $password
) {
    // …
    
    throw new Exception('Error');
}
 
login('root', 'root');

Ao executar este código, ele apresenta o erro da seguinte forma:

Fatal error: Uncaught Exception: Error in login.php:8
Stack trace:
#0 login.php(11): login('root', Object(SensitiveParameterValue))
#1 {main}
  thrown in login.php on line 8

utf8_encode() e utf8_decode() obsoletos

Mais dois itens obsoletos, ao utilizar utf8_encode() e utf8_decode() , irá retornar o erro:

Deprecated: Function utf8_encode() is deprecated
Deprecated: Function utf8_decode() is deprecated

Estas são apenas algumas das novidades do PHP 8.2, caso queira saber sobre todas as novidades, consulte a documentação oficial!

Fonte

3 curtidas

php sempre terá um lugar especial no meu coração! :smiling_face_with_three_hearts:

1 curtida

:heart_eyes: :heartpulse: :heartpulse: :heartpulse:

Preciso desta fofura de pelúcia @josebarbosa! Onde encontro?

Esta aí eu achei à venda na Latinoware de 2012.

1 curtida

https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html

https://lists.apache.org/thread/xxfk5l796bwy5lgtov1h125p7p8rt629

PHP 8.2 PPA: sudo add-apt-repository ppa:ondrej/php

:blush: vlw!