5 novidades do PHP 8

PHP 8

Em dezembro de 2020 teremos o lançamento da versão 8 do PHP, e consequentemente muitas novidades! Falaremos de algumas delas hoje:

1. Função `str_contains`
Hoje em dia quando queremos saber se uma string tem uma determinada palavra, precisamos utilizar a função str_pos.

$myString = 'php8';
$findMe = '8';
if (strpos($myString, $findMe) !== false) {
    //  faça alguma coisa
}

A comparação com !== false é necessária pois caso a ocorrência da palavra procurada esteja no índice 0 o mesmo será retornado.

Com a adição dessa nova função, o código fica muito mais legível:

$myString = 'php8';
$findMe = '8';
if (str_contains($myString, $findMe)) {
// faça alguma coisa
}


2. Constructor promotion
Atualmente, a definição de um atributo em uma classe requer muito código:

class Point {
    public float $x;
 
    public function __construct(
        float $x = 0.0
    ) {
        $this->x = $x;
    }
}

Agora no PHP 8 existe uma forma de fazer isso de um jeito mais simples:

class Point {
    public function __construct(
        public float $x = 0.0
    ) {}
}

3. Disparo de exceções
Antes não era possível disparar exceções onde só expressões eram permitidas, por exemplo:

$callable = fn() => throw new Exception();

$value = $nullableValue ?? throw new InvalidArgumentException();

$value = $falsableValue ?: throw new InvalidArgumentException();

Agora essas declarações são permitidas, tornando o código mais legível.

4. Match expression
Elas são similares ao switch, com a diferença que elas tem uma sintaxe mais simples e permitem que valores sejam retornados:

// Antes
switch (1) {
    case 0:
        $result = 'Foo';
        break;
    case 1:
        $result = 'Bar';
        break;
    case 2:
        $result = 'Baz';
        break;
}
 
echo $result;
//> Bar
// Depois
echo match (1) {
    0 => 'Foo',
    1 => 'Bar',
    2 => 'Baz',
};
//> Bar

5. Non-capturing catches
Atualmente é necessário especificar uma variável para receber a exceção, mesmo que você não a utilize-a:

try {
    facaQualquerCoisa();
} catch (PermissaoNegadaException $ex) {
    echo "Você não tem permissão para executar essa ação.";
}

Com essa nova feature, isso não é mais necessário:

try {
    facaQualquerCoisa();
} catch (PermissaoNegadaException) { // o precisa declarar uma variável para receber a exceção 
    echo "Você não tem permissão para executar essa ação.";
}

Essas são apenas algumas da novidades que estão por vir. As atualizações costumam incluir correções de seguranças, por isso é importante manter a versão do PHP—bem como outras libs e tecnologias—sempre atualizadas.

Caso deseje acompanhar a evolução da linguagem mais de perto e ficar por dentro do que está sendo discutido, um dos meios recomendado é o https://phpinternals.news, um canal de podcats apresentado pelo Derick Rethans (criador do x-Debug), onde semanalmente ele conversa com os autores de algumas RFC’s (acrônimo de Request For Comments). As entrevistas são em inglês e possuem transcrição. Se você não domina essa língua, é possível usar um tradutor de texto para acompanhar.

Nessa página aqui https://wiki.php.net/RFC é possível ver todas as RFC’s e seus respectivos status.

Written by 

One thought on “5 novidades do PHP 8

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

6 − quatro =