Tecnologia
10 coisas que chegam com o PHP 8
15/05/2020 às 20:01 Bruno Couty
Com a chegada do PHP 8 chegam tambm muitas novidades. Ele est recheado de novas features para abrilhantar nossos projetos! Sendo assim, vamos apresentar algumas delas. Separamos uma bela lista para voc, vamos l:
- Attributes - aka annotations
use \Support\Attributes\ListensTo;
class ProductSubscriber
{
<<ListensTo(ProductCreated::class)>>
public function onProductCreated(ProductCreated $event) { /* */ }
<<ListensTo(ProductDeleted::class)>>
public function onProductDeleted(ProductDeleted $event) { /* */ }
}
- Union Types permitidos para vrios tipos de type hinting
public function foo(Foo|Bar $input): int|float;
public function bar(mixed $input): mixed;
Existe tambm um novo tipo mixed
que representa vrios tipos em um.
- O tipo de retorno
static
na declarao interna
interface Foo
{
public function bar(): static;
}
- Compilador 'just-in-time' para o PHP
[JIT]
opcache.jit=5
-
throw
pode ser utilizada em expresses
$triggerError = fn() => throw new MyError();
$foo = $bar['offset'] ?? throw new OffsetDoesNotExist('offset');
- Non-captureing catches
No h obrigatoriedade de criar uma varivel para receber a exceo se voc no precisa!
try {
// Something goes wrong
} catch (MySpecialException) {
Log::error("Something went wrong");
}
- Vrgulas direita em parmetros? SIM!
public function(
string $parameterA,
int $parameterB,
Foo $objectfoo,
) {
//
}
- Novas funes para
strings
:
str_contains('string with lots of words', 'words');
str_starts_with('haystack', 'hay');
str_ends_with('haystack', 'stack');
- Permite chamar
::class
diretamente de um objeto
$foo = new Foo();
var_dump($foo::class);
- Criar objetos
DateTime
de umainterface
J possvel criar um objeto DateTime
a partir de um objeto DateTimeImmutable
utilizando DateTime::createFromImmutable($immutableDateTime)
. Todavia, fazer o inverso no era to simples... Adicionando DateTime::createFromInterface()
e DatetimeImmutable::createFromInterface()
existe um modo generalizado de converter objetos DateTime
e DateTimeImmutable
entre si.
DateTime::createFromInterface(DateTimeInterface $other);
DateTimeImmutable::createFromInterface(DateTimeInterface $other);
Mantenha-se atualizado. O saber no ocupa lugar!