A equipe do PHP lançou hoje o PHP 8.4 com novas funções de localização de array, ganchos de propriedade, instanciação de classe sem parênteses extras e muito mais:
Veja o PHP 8.4 RFC página para uma lista completa.
#Novas funções de localização de array
O PHP 8.4 virá com novas funções de localização de array que incluem:
-
array_find()
-
array_find_key()
-
array_any()
-
array_all()
Veja nosso post sobre funções de localização de array do PHP 8.4.
#Ganchos de propriedade PHP
Os ganchos de propriedade são inspirados em linguagens uma vez que Kotlin, C# e Swift, e a sintaxe inclui duas variantes de sintaxe que se assemelham a fechamentos curtos e de várias linhas:
class User implements Named
{
private bool $isModified = false;
public function __construct(
private string $first,
private string $last
) {}
public Sua visita nos ajuda a continuar oferecendo o melhor para você! style="color: #D73A49;">string $fullName {
// Override the "read" action with arbitrary logic.
get => $this->first . " " . $this->last;
// Override the "write" action with arbitrary logic.
set {
[$this->first, $this->last] = explode(' ', $value, 2);
$this->isModified = true;
}
}
}
Os ganchos de propriedade ajudarão a remover o clichê de getters e setters de propriedades, permitindo que uma propriedade defina entrada e atualizações usando ganchos.
Confira nosso post para mais detalhes: Property Hooks no PHP 8.4.
#new MyClass()->method() sem parênteses
Uma vez que o entrada de membro durante a instanciação foi introduzido, você deve agrupar o new MyClass()
chame entre parênteses ou você receberá um erro de estudo. A sintaxe proposta permitiria acessar constantes, propriedades e métodos sem os parênteses extras:
// Wrapping parentheses are required to access class members
$request = (new Request())->withMethod('GET')->withUri('/hello-world');
// PHP Parse error (<= PHP 8.3): syntax error, unexpected token "->"
$request = new Request()->withMethod('GET')->withUri('/hello-world');
Esta atualização corrige o papercut que simplifica o trabalho com o entrada aos membros da classe, sem a urgência de juntar parênteses ou usar um método construtor estático. Essa mudança de sintaxe também coloca o PHP mais desempenado com outras linguagens C uma vez que Java, C# e TypeScript, que não requerem parênteses entre parênteses.
Confira nosso post para mais detalhes: Instanciação de classe sem parênteses extras no PHP 8.4.
#Crie um DateTime a partir de um timbre de data/hora Unix
Criando um DateTime
de um timestamp Unix será mais profíquo no PHP 8.4, com o novo createFromTimestamp()
método. Ele suportará um timbre de data/hora típico do Unix, muito uma vez que carimbos de data/hora contendo microssegundos:
$dt = DateTimeImmutable::createFromTimestamp(1718337072);
$dt->format('Y-m-d'); // 2024-06-14
$dt = DateTimeImmutable::createFromTimestamp(1718337072.432);
$dt->format('Y-m-d h:i:s.u'); // 2024-06-14 03:51:12.432000
Nas versões anteriores do PHP, existem algumas maneiras de fabricar uma instância DateTime a partir de um timbre de data/hora, uma vez que o createFromFormat()
método:
$dt = DateTimeImmutable::createFromFormat('U', (string) 1718337072);
// DateTimeImmutable @1718337072 {#7948
// date: 2024-06-14 03:51:12.0 +00:00,
// }
$dt = DateTimeImmutable::createFromFormat('U.u', (string) 1718337072.432);
// DateTimeImmutable @1718337072 {#7950
// date: 2024-06-14 03:51:12.432 +00:00,
// }
#Novas funções mb_
O PHP tem as funções trim, ltrim, rtrim, ucfirst e lcfirst há muito tempo, e agora no PHP 8.4 ele adiciona mb_
suporte a strings multibyte para essas funções.
-
mb_trim()
-
mb_ltrim()
-
mb_rtrim()
-
mb_ucfirst()
-
mb_lcfirst()
Todos eles carregam os mesmos argumentos das funções originais. Essas funções são de dois RFCs separados: rfc:mb_trim e rfc:mb_ucfirst.
#Visibilidade de propriedade assimétrica
A partir do PHP 8.4, as propriedades também podem ter sua visibilidade definida de forma assimétrica com um escopo dissemelhante para leitura e escrita. Cá está um exemplo do documentação:
class Book
{
public function __construct(
public private(set) string $title,
public protected(set) string $author,
protected private(set) int $pubYear,
) {}
}
class SpecialBook extends Book
{
public function update(string $author, int $year): void
{
$this->author = $author; // OK
$this->pubYear = $year; // Irremissível Error
}
}
$b = new Book('How to PHP', 'Peter H. Peterson', 2024);
echo $b->title; // How to PHP
echo $b->author; // Peter H. Peterson
echo $b->pubYear; // Irremissível Error
Confira nosso post para mais detalhes: Visibilidade de propriedade assimétrica no PHP 8.4.
#Laravel Herd já suporta 8.4
Se você está procurando uma maneira fácil de inaugurar a usar o PHP 8.4, Rebanho Laravel já inclui suporte e você pode mudar para ele com muita facilidade.
PHP 8.4.1 está cá! 🎉
Um clique para explorar todos os novos recursos do Laravel Herd
— Marcel Pociot (@marcelpociot.bsky.social) 21 de novembro de 2024 às 5h16
#Saber mais
Para se atualizar sobre esses novos recursos, confira o PHP 8.4.0 Proclamação de lançamento página para exemplos antes/depois do PHP 8.4. Certifique-se de verificar as descontinuações e quebras de compatibilidade com versões anteriores.
A lista de recursos adicionais a seguir contém tudo que você precisa para saber mais sobre esta versão:
- O ATUALIZAÇÃO O documento inclui alterações incompatíveis com versões anteriores, novos recursos e tudo mais que você precisa para se familiarizar com as mudanças no PHP 8.4
- O NOTÍCIAS documento contém notas detalhadas sobre cada versão
- O Tarefas de preparação do PHP 8.4 página tem o cronograma de lançamento dos próximos lançamentos
- Você pode subtrair o código-fonte do PHP 8.4 no site página de downloads
Tags:
Crédito: Manancial Original