Com o lançamento do Scriptcase 9.8 seu projetos podem ser publicados em ambinetes atualizados, com o PHP 8 e 8.1.
Lembrando que ainda é possível realizar a publicação em ambientes com o PHP mais desatualizado, sendo compatível com o PHP 5.6 ou superior.
Afim de evitar problemas de incompatibilidade em seus códigos em eventos ou bibliotecas, recomedamos que o PHP utilizando em seu ambiente de desenvolvimento seja o mesmo do utilizado na produção.
A atualização do PHP trás diversas melhorias para o Scriptcase, como melhora de performace e segurança tanto no ambiente de desenvolvimento quanto nas aplicações geradas pela ferramenta.
Junto a atualização do PHP algumas funções são implementadas ou tem seus funcionamentos alterados afim de melhorar a utilização.
Confira abaixo algumas novidades do PHP, para ter acesso a lista completa clique aqui.
Readonly Properties
Suporte a propriedades somente leitura. Este tipo de propriedade não pode ser modificada ou editada após usa inicialização.
Como funcionava antes
-
Class BlogData
-
{
-
private Status $status
-
public function __construct(Status $status)
-
{
-
$this->status = $status;
-
}
-
public function getStatus(): Status
-
{
-
return $this->status;
-
}
-
}
No PHP 8.1
-
Class BlogData
-
{
-
public readonly Statys $status
-
public function __construct(Status $status)
-
{
-
$this->status = $status;
-
}
-
}
Operador "nullsafe" ?->
Implementação do operador nullsafe(?->) permite realizar verificações de valores nulo de uma forma bem mais simples.
Abaixo seguem os códigos comparado a utilização do operador no PHP 8 e como o mesmo códido deveria ser feito em versões anteriores.
A partir do PHP 8, esta linha:
- $result = $repository?->getUser(5)?->name;
É o equivalente ao seguinte código em versões anteriores do PHP:
-
if (is_null($repository)) {
-
$result = null;
-
} else {
-
$user = $repository->getUser(5);
-
if (is_null($user)) {
-
$result = null;
-
} else {
-
$result = $user->name;
-
}
-
}
Propriedades tipadas
As propriedades de classe agora suportam declarações de tipo.
-
class User {
-
public int $id;
-
public string $name;
-
}
O exemplo acima reforçará que $user->id pode ser atribuído apenas com valores int e $user->name somente com valores de string.
Union Types
Permite que uma mesma variável aceite dois tipos distintos de dados. Para definir os tipos que a variável pode receber basta utilizar o pipe "|" entre os tipos.
Exemplo resumido da utilização em código.
-
function myFunction(int|float $number): int
-
{
-
return round($number);
-
}
Função str_contains
Permite realizar uma busca dentro de uma string retornando um booleano.
Para mais informações sobre esta função acesse o https://www.php.net/manual/en/function.str-contains.php
Você pode estar lendo a RFC sobre essa função para poder verificar todas suas características.
Exemplo
- str_contains ( string $haystack , string $needle ) : bool
No código acima será realizada a verificação para indicar se a string $needle está presente dentro da string $haystack . Se sim retorna true caso contrário retornará false.
Funções str_starts_with() e str_ends_with()
Estas funções tem o funcionamento semelhante a str_contains() no entanto elas verificam se um string começa ou termina com determinada string, economisando o uso da CPU já que não será necessário percorrer toda a string.
Alem do funcionamento a syntaxe também é semelhante com a função str_contains.
-
str_starts_with (string $haystack , string $needle) : bool
-
str_ends_with (string $haystack , string $needle) : bool