Programação / PHP

Confira os novos recursos adicionados nas novas versões do PHP

Contando agora com os novos operadores, obrigando o tipo de retorno de cada método e podendo tratar várias excessões num único bloco, o php tende a ficar mais performático e os métodos ficarem mais harmônicos com a responsabilidade clara.

Por Gustavo Web

Publicado por Gustavo Web
em 25/07/2017 às 08h00

Lista VIP UpInside

Entre para nossa lista VIP e receba vídeo aulas, artigos e tutoriais exclusivos e com prioridade

  QUERO ENTRAR
Compartilhe:

Salve salve moqueridos! Bora conversar um pouco hoje sobre PHP7?

Atualmente, nossos servidores rodam o PHP 5.6 pois as novas versões do PHP7 são tecnicamente "recentes"! Mas estavamos conversando internamente essa semana aqui na UP e eu vou atualizar meu ambiente de desenvolvimento para a versão 7.1.7 para criar as novas implementações.

Estive dando uma olhada no site oficial do PHP, e achei algumas informações interessantes pra compartilhar aqui com vocês para colocar em prática nos projetos pessoais :)

Entenda as versões:

Atualmente estamos na versão 5.6 que todos já conhecem e provavelmente tem os seus ambientes de desenvolvimento nessa versão! O que precisa ficar de olho é que temos a versão do PHP7 (7.0.21) e temos o PHP7.1 (7.1.7). Em cada uma delas há recursos específicos e melhorias que foram adicionadas com a evolução da linguagem. Portanto, quando estiver trabalhando, é crucial que você saiba o que sua máquina está rodando para não ter problemas com determinados tipos de recursos.

Os recursos que vou colocar aqui abaixo, vou adicionar também a partir de qual versão eles estão disponíveis.

Definição do tipo de retorno (PHP7)

Agora quando você estiver desenvolvendo seus métodos, você pode deixar de forma explícita qual será o tipo de retorno esperado. Saca só:

function soma($numero1, $numero2): int {
return $numero1 + $numero2;
}

echo soma(2, 3.1514);
> 5

Percebe que na frente da declaração dos atributos da classe, tem um : int? Isso significa que o retorno dessa função deve obrigatóriamente ser do tipo inteiro. Se você fizer a soma de 2 + 3.1514 obviamente que será um número com 4 casas decimais... Porém o retorno trunca o valor e obriga a devolver somente a parte inteira, resultando no valor 5. Isso torna a responsabilidade do seu método muito mais coeso, pois ele vai retornar o que de fato é necessário.

O mesmo pode ser feito com um objeto! Veja o exemplo:

class Pessoa {} // objeto vazio... somente para ilustração

function obterPessoa(): Pessoa {
return new Pessoa;
}

var_dump(obterPessoa());
> object(Pessoa)#1 (0) { }

Com isso você consegue facilmente trabalhar com uma arquitetura de ORM! Se você ainda não sabe o que é ORM fica tranquilo que o assunto está no gatilho para os próximos artigos...

Novo Operador (PHP7):

Primeira coisa muito massa da nova versão é o novo operador. Ele veio para ajudar os desenvolvedores a poupar algumas teclas e no lugar de ternárias você pode simplesmente fazer a verificação desse mesmo operador para ter exatamente o mesmo resultado. Dá uma olhada como fica:

$nomeUsuario = $Read->getResult()[0]['user_name'] ?? 'Novo usuário';

// Mesma coisa de:
$nomeUsuario = (isset($Read->getResult()[0]['user_name']) ? $Read->getResult()[0]['user_name'] : 'Novo usuário');

Esse operador ?? já verifica também a checagem de valor com NULL. Portanto, serve tranquilamente para aquelas nossas verificações rotineiras de ternárias.

Operador spaceship (PHP7):

Esse operador retorna -1, 0 ou 1 respectivamente pelas seguintes verificações: Quando o primeiro parâmetro for menor que (-1), quando o primeiro parâmetro for igual a (0) e quando o operador for maior que (1)

// Números
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Números com casas decimais
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

Vetor em DEFINE (PHP7):

Você pode usar para armazenar a taxa de parcelamento por exemplo e calcular os juros numa conta de determinada fatura... Como na caso do PagSeguro, ele tem uma tabela com o fator para fazer os cálculos... Por exemplo:

define('PAGAMENTO_TX_FATOR', [
1,00000,
0,52255,
0,35347,
0,26898,
...
])

echo PAGAMENTO_TX_FATOR['2'];
> 0,35347

Isso inibe que você tenha que adicionar dezenas de defines no seu projeto e suas informações possam ficar mais organizadas.

Suporte ao NULLABLE (PHP7.1):

Agora quando precisa informar que o parâmetro ou que o retorno pode ser nulo, você tem um operador para fazer esse tipo de apontamento. Veja como fica o antes e o depois:

public function obterUsuario($id = null, $nome = null, $cpf = null){ 
//
}

public function obterUsuario(?$id, ?$nome, ?$cpf){
//
}

Isso indica que cada um dos parâmetros agora pode ser nulo ou ter valor. E o mesmo vale para o retorno que vimos logo aqui acima:

function teste($param, $param2): ?string {
return null;
}

var_dump(teste('testando', 'testando2'));
> NULL

Multi Excessão (PHP7.1):

Agora quando você estiver trabalhando com o try/catch, você pode definir mais de uma verificação:

try{
//
} catch (PDOException | Exception $e) {
// tretamento das excessões
echo "{$e->getMessage()}";
}

No exemplo assim, será tratado qualquer excessão do PDO ou da própria linguagem. Isso evita que você tenha mais de um try/catch e ainda aumenta o nível de tratamento da sua aplicação.

Bom galera, mostrei alguns recursos que eu achei bacana das novas versões do PHP e eu vou fazer meus testes no localhost. E aconselho você a fazer os mesmo no seu ambiente. Se curtiu esse artigo, já sabe né! Curta, comente, compartilhe. Vou responder todos os comentários :)

Aqueeeele abraço!

Compartilhe:

Em Programação:

Deixe seu comentário: