Descrição: Olá queridos alunos e alunas, aqui é Maykon Silveira.
O PHP tem uma grande novidade para 2021 o PHP 8, confira o que mudou:
PHP 8.0 é uma atualização importante da linguagem PHP.
Ele contém muitos novos recursos e otimizações, incluindo argumentos nomeados, tipos de união, atributos, promoção de propriedade do construtor, expressão de correspondência, operador nullsafe, JIT e melhorias no sistema de tipo, tratamento de erros e consistência.
Argumentos nomeados RFC
No PHP 7 ficaria assim:
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
No PHP 8 ficaria assim:
htmlspecialchars($string, double_encode: false);
- Especifique apenas os parâmetros obrigatórios, ignorando os opcionais.
- Os argumentos são independentes da ordem e autodocumentados.
No PHP 7 ficaria assim:
class PostsController
{
public function get($id) { }
}
No PHP 8 ficaria assim:
class PostsController
{
public function get($id) { }
}
Em vez de anotações PHPDoc, agora você pode usar metadados estruturados com a sintaxe nativa do PHP.
Documento RFC da promoção da propriedade do construtor
No PHP 7 ficaria assim:
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
No PHP 8 ficaria assim:
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}
Menos código clichê para definir e inicializar propriedades.
Tipos de união RFC Doc
No PHP 7 ficaria assim:
class Number {
private $number;
public function __construct($number) {
$this->number = $number;
}
}
new Number('NaN');
No PHP 8 ficaria assim:
class Number {
public function __construct(
private int|float $number
) {}
}
new Number('NaN');
Match expression RFC Doc
Lembra do nosso velho amigo switch, o cara mudou para melhor, vejam:
No PHP 7 ficaria assim:
switch (8.0) {
case '8.0':
$result = "Oh no!";
break;
case 8.0:
$result = "This is what I expected";
break;
}
echo $result;
No PHP 8 ficaria assim:
echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};
A nova correspondência é semelhante ao switch e tem os seguintes recursos:
- Match é uma expressão, o que significa que seu resultado pode ser armazenado em uma variável ou retornado.
- Os ramos de correspondência suportam apenas expressões de uma linha e não precisam de uma pausa; declaração.
- Match faz comparações estritas.
RFC do operador Nullsafe
No PHP 7 ficaria assim:
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
No PHP 8 ficaria assim:
$country = $session?->user?->getAddress()?->country;
Em vez de condições de verificação nula, agora você pode usar uma cadeia de chamadas com o novo operador nullsafe. Quando a avaliação de um elemento da cadeia falha, a execução de toda a cadeia é cancelada e toda a cadeia é avaliada como nula.
String mais sã para comparações de números RFC
No PHP 7 ficaria assim:
0 == 'foobar'
No PHP 8 ficaria assim:
0 == 'foobar'
No PHP 7 ficaria assim:
strlen([]); array_chunk([], -1);
No PHP 8 ficaria assim:
strlen([]); array_chunk([], -1);
Compilação Just-In-Time
PHP 8 apresenta dois motores de compilação JIT. Tracing JIT, o mais promissor dos dois, mostra desempenho cerca de 3 vezes melhor em benchmarks sintéticos e melhoria de 1,5 a 2 vezes em alguns aplicativos específicos de longa execução. O desempenho típico do aplicativo está no mesmo nível do PHP 7.4.
Contribuição JIT relativa para o desempenho do PHP 8
Melhorias no sistema de tipo e tratamento de erros
- Verificações de tipo mais estritas para operadores aritméticos / bit a bit RFC
- RFC de validação de método de característica abstrata
- Assinaturas corretas de métodos mágicos RFC
- RFC de avisos de mecanismo reclassificado
- Erro fatal para assinaturas de método incompatíveis RFC
- O operador @ não silencia mais os erros fatais.
- Herança com métodos privados RFC
- RFC de tipo misto
- RFC de tipo de retorno estático
- Tipos de funções internas Tópico de email
- Objetos opacos em vez de recursos para extensões Curl , Gd , Sockets , OpenSSL , XMLWriter e XML
Outros ajustes e melhorias de sintaxe
- Permitir uma vírgula à direita nas listas de parâmetros RFC e RFC de listas de uso de fechamento
- RFC de capturas sem captura
- RFC de ajustes de sintaxe variável
- Trate nomes com namespace como RFC de token único
- Throw é agora uma expressão RFC
- Permitir :: classe em objetos RFC
Novas classes, interfaces e funções
Bom pessoal, espero ter ajudado a todos com esta super dica.
Fonte php.net
Em breve curso de PHP 8 do zero ao profissional.
Atenciosamente Maykon Silveira
Olá queridos alunos e alunas, aqui é Maykon Silveira.
O PHP tem uma grande novidade para 2021 o PHP 8, confira o que mudou:
PHP 8.0 é uma atualização importante da linguagem PHP.
Ele contém muitos novos recursos e otimizações, incluindo argumentos nomeados, tipos de união, atributos, promoção de propriedade do construtor, expressão de correspondência, operador nullsafe, JIT e melhorias no sistema de tipo, tratamento de erros e consistência.
Argumentos nomeados RFC
No PHP 7 ficaria assim:
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
No PHP 8 ficaria assim:
htmlspecialchars($string, double_encode: false);
- Especifique apenas os parâmetros obrigatórios, ignorando os opcionais.
- Os argumentos são independentes da ordem e autodocumentados.
No PHP 7 ficaria assim:
class PostsController
{
public function get($id) { }
}
No PHP 8 ficaria assim:
class PostsController
{
public function get($id) { }
}
Em vez de anotações PHPDoc, agora você pode usar metadados estruturados com a sintaxe nativa do PHP.
Documento RFC da promoção da propriedade do construtor
No PHP 7 ficaria assim:
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
No PHP 8 ficaria assim:
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}
Menos código clichê para definir e inicializar propriedades.
Tipos de união RFC Doc
No PHP 7 ficaria assim:
class Number {
private $number;
public function __construct($number) {
$this->number = $number;
}
}
new Number('NaN');
No PHP 8 ficaria assim:
class Number {
public function __construct(
private int|float $number
) {}
}
new Number('NaN');
Match expression RFC Doc
Lembra do nosso velho amigo switch, o cara mudou para melhor, vejam:
No PHP 7 ficaria assim:
switch (8.0) {
case '8.0':
$result = "Oh no!";
break;
case 8.0:
$result = "This is what I expected";
break;
}
echo $result;
No PHP 8 ficaria assim:
echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};
A nova correspondência é semelhante ao switch e tem os seguintes recursos:
- Match é uma expressão, o que significa que seu resultado pode ser armazenado em uma variável ou retornado.
- Os ramos de correspondência suportam apenas expressões de uma linha e não precisam de uma pausa; declaração.
- Match faz comparações estritas.
RFC do operador Nullsafe
No PHP 7 ficaria assim:
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
No PHP 8 ficaria assim:
$country = $session?->user?->getAddress()?->country;
Em vez de condições de verificação nula, agora você pode usar uma cadeia de chamadas com o novo operador nullsafe. Quando a avaliação de um elemento da cadeia falha, a execução de toda a cadeia é cancelada e toda a cadeia é avaliada como nula.
String mais sã para comparações de números RFC
No PHP 7 ficaria assim:
0 == 'foobar'
No PHP 8 ficaria assim:
0 == 'foobar'
No PHP 7 ficaria assim:
strlen([]); array_chunk([], -1);
No PHP 8 ficaria assim:
strlen([]); array_chunk([], -1);
Compilação Just-In-Time
PHP 8 apresenta dois motores de compilação JIT. Tracing JIT, o mais promissor dos dois, mostra desempenho cerca de 3 vezes melhor em benchmarks sintéticos e melhoria de 1,5 a 2 vezes em alguns aplicativos específicos de longa execução. O desempenho típico do aplicativo está no mesmo nível do PHP 7.4.
Contribuição JIT relativa para o desempenho do PHP 8
Melhorias no sistema de tipo e tratamento de erros
- Verificações de tipo mais estritas para operadores aritméticos / bit a bit RFC
- RFC de validação de método de característica abstrata
- Assinaturas corretas de métodos mágicos RFC
- RFC de avisos de mecanismo reclassificado
- Erro fatal para assinaturas de método incompatíveis RFC
- O operador @ não silencia mais os erros fatais.
- Herança com métodos privados RFC
- RFC de tipo misto
- RFC de tipo de retorno estático
- Tipos de funções internas Tópico de email
- Objetos opacos em vez de recursos para extensões Curl , Gd , Sockets , OpenSSL , XMLWriter e XML
Outros ajustes e melhorias de sintaxe
- Permitir uma vírgula à direita nas listas de parâmetros RFC e RFC de listas de uso de fechamento
- RFC de capturas sem captura
- RFC de ajustes de sintaxe variável
- Trate nomes com namespace como RFC de token único
- Throw é agora uma expressão RFC
- Permitir :: classe em objetos RFC
Novas classes, interfaces e funções
Bom pessoal, espero ter ajudado a todos com esta super dica.
Fonte php.net
Em breve curso de PHP 8 do zero ao profissional.
Atenciosamente Maykon Silveira
php8, o que mudou no php 8, tudo sobre o php 8, qual a diferença entre php 7 e 8, php 7 vs php 8, Maykon Silveira, curso de php 8, cursos online de php 8, curso de php 8 orientado a objetos, curso fullstack php 8, php, programação php 8