PHP 8 em oito pedaços de código

O PHP 8 possui muitos recursos novos. Nesta lista, veremos os mais destacados.

Isenção de responsabilidade: o link para este artigo em inglês já estava no post do último resumo do PHP. Se você conhece o idioma o suficiente, pode valer a pena ir para o original, há muitas notas de rodapé em outros artigos em inglês.

Tempo


use \Support\Attributes\ListensTo;

class ProductSubscriber
{
    <<ListensTo(ProductCreated::class)>>
    public function onProductCreated(ProductCreated $event) { /* … */ }

    <<ListensTo(ProductDeleted::class)>>
    public function onProductDeleted(ProductDeleted $event) { /* … */ }
}

Em vez de docblock, atributos.

Sim, eu sei, a sintaxe pode não ser da maneira que você queria ou esperava. Talvez você prefira @, @:, ou docblocks ou qualquer outra coisa. Mas ele será exatamente isso. A única coisa que vale a pena mencionar sobre a sintaxe é que todas as opções foram discutidas e há muitas boas razões para que essa sintaxe tenha sido escolhida. Você pode ler um breve resumo disso na RFC ou ler toda a discussão sobre RFC na lista de componentes internos .



Dois


public function foo(Foo|Bar $input): int|float;

public function bar(mixed $input): mixed;

A combinação de tipos permite especificar vários tipos ao mesmo tempo. Há também um novo tipo misto que representa vários tipos ao mesmo tempo.



Três


interface Foo
{
    public function bar(): static;
}

Você pode especificar estático no tipo de retorno.



Quatro


[JIT]
opcache.jit=5

Compilador JIT embutido.

O que é o JIT?

"JIT" significa "just in time" - "na hora certa". Você provavelmente sabe que o PHP é uma linguagem interpretada: não é compilado como um programa em C, Java ou Rust. Em vez disso, ele se traduz em código de máquina - algo que o processador entende - em tempo de execução.

"JIT" é um método que compila partes do código em tempo de execução para que uma versão compilada possa ser usada.

Pense nisso como uma "versão em cache" do código interpretado gerado em tempo de execução.

Mais detalhadamente já escrevi sobre Habré



Cinco


$triggerError = fn() => throw new MyError();

$foo = $bar['offset'] ?? throw new OffsetDoesNotExist('offset');

throw pode ser usado em expressões.



Seis


try {
    // Something goes wrong
} catch (MySpecialException) {
    Log::error("Something went wrong");
}

Você pode omitir a variável de exceção se não precisar dela.



Sete


public function(
    string $parameterA,
    int $parameterB,
    Foo $objectfoo,
) {
    // …
}

Você pode especificar uma vírgula no final da lista de parâmetros.



Oito


str_contains('string with lots of words', 'words');

str_starts_with('haystack', 'hay');

str_ends_with('haystack', 'stack');

Novas funções de string. Eu acho que o nome deles fala por si.
Não vamos nos enganar: 8 blocos de código não são suficientes para resumir todas as grandes novidades do PHP 8. Então, vamos adicionar mais algumas.



Nove


function bar(Stringable $stringable) { /* … */ }

Uma nova interface Stringable que é adicionada automaticamente às classes que implementam o método __toString ().



Dez


$object::class

Calling :: class diretamente do objeto.



All Articles