Cursos Magento

5 Novidades de destaque do PHP 8 e 8.1

, ,

Atualizado em 21 de abril de 2022

A última versão do PHP foi lançada no final de Dezembro/21 e trouxe muitas novidades.

Como de costume, frameworks e componentes demoram algumas semanas ou meses até serem testados e se adaptarem à novas versões majoritárias. Muitos métodos deixam de ser suportados, novos são adicionados, avisos e erros precisam ser corrigidos.

As melhorias trazidas no novo release do PHP são várias. Neste artigo listo aquelas que julgo serem as de maior impacto no nosso mundo Magento.

1. Auto declaração de propriedades no construtor

Agora não precisamos mais criar propriedades e setá-las no construtor.

Antes

class Magenteiro
{
    /**
     * @var Monolog
     */
    private $logger;

    public function __construct(Monolog $logger)
    {
        $this->logger = $logger;
    }
}

Depois

class Magenteiro
{
    public function __construct(private Monolog $logger)
    {
    }
}

No exemplo acima nosso construtor recebe apenas uma propriedade. Mas como sabemos, geralmente temos mais que isso.

Agora nosso código ficará mais limpo e fácil de ser escrito.

2. Parâmetros com nomes

Ao chamar métodos que possuem muitos parâmetros é comum que nos esqueçamos a ordem dos mesmos.

Também é comum termos que especificar um monte de parâmetros com valores padrão para modificar apenas o que queremos.

function setCookie($name, $path='/', $secure=true, $duration=3600, $value='')
{
    //...
}
//ANTES
setCookie('magenteiro', '/', true, 3600, 'teste');

//PHP 8 em diante
setCookie(name: 'magenteiro', value: 'teste');

Bem mais fácil, não é mesmo? O mesmo pode ser usado em construtores de classe.

Além de facilitar a vida, seu código ficará muito mais fácil de ser lido e entendido.

3. Retorno de métodos em Exceptions

A partir do PHP 8.0.0 o nome da variável para um catch de exceção passa a ser opcional. Se não especificado, o catch será executado mas não terá acesso ao objeto devolvido.

Mas a novidade maior é que agora podemos usar o throw como um statement dentro de uma expressão comum. E podemos fazer isso também em arrow functions, operadores de coalescência nula e operadores ternários.

Veja alguns exemplos:

$callable = sendToErp() => throw new FailedErpIntegrationException();

//para validar valores

// $value is non-nullable.
$value = $nullableValue ?? throw new InvalidArgumentException();
 
// $value is not truthy
$value = $falsableValue ?: throw new InvalidArgumentException();

Isso certamente facilitará um bocado a escrita de classes e tratamento correto de exceções.

4. Melhorias no OpCache

O OpCache por si só já melhora significativamente a performance de lojas Magento. No entanto, uma alteração submetida por Dmitry Stogov promete melhorar em até 8% a performance do nosso amigo.

De acordo com o autor, a melhoria funcionará como uma espécie de cache de herança, porém agora salvo em memória. Isso deve melhorar significativamente a performance de lojas Magento.

5. Compilador JIT

Esta é provavelmente a maior novidade do PHP 8. Trata-se de um modo híbrido de compilação. A explicação mais completa sobre como isso funciona pode ser visto neste vídeo do Ricardo Augusto.

É esperado que com o novo compilador JIT, implementado como parte do Opcache, traga ainda mais performance em nossas lojas Magento.

Magento e PHP 8.1

Uma nova versão do Magento está para ser lançada.

No próximo dia 26 de Março (adiado para 12 de Abril) será lançado o Magento 2.4.4. E a versão mínima necessária do PHP necessária será a 8.1.

Ou seja, o novo Magento já suportará os novos recursos e funcionalidades do mais novo PHP.

Conclusão

À partir do Magento 2.4.4 teremos acesso a valiosos recursos do novo PHP. Isso facilitará a vida de desenvolvedores de forma significativa.

Além disso é esperada uma grande melhoria de performance no ambiente de desenvolvimento. 🤞

E aí? O que você mais gostou no PHP 8 e 8.1? Comente!

Fontes e artigos externos relacionados

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/5-novidades-do-php-8/"]