O objetivo desse post é colocar de uma forma simples e reunida as principais features do PHP 7 e comentar um pouco em como essas novidades podem auxiliar no dia-a-dia do desenvolvedor.

A primeira novidade é chamada de “Declaração de tipo escalar”, trata de uma declaração de parâmetro que aceita um número N de argumentos. Nesse caso nada melhor que um exemplo:

function sumOfInts(int ...$ints) {
    return array_sum($ints);
}

var_dump(sumOfInts(2, '3', 4.1));

Como pode ser notado, os “…” antes da variável indica ao PHP que poderá receber para aquela função N parâmetros e PHP entrega dentro do método um array com os valores informados.

Uma outra novidade muito interessante é a definição de tipos para parâmetros e retornos de métodos, essa novidade não é de uso obrigatório, porém quando bem usada pode ajudar a resolver vários problemas de códigos são testados em determinadas condições (como qualquer processo de desenvolvimento prega) e quando em produção nos deparamos com erros sendo exibidos em tela ou mesmo funcionalidades parcialmente quebradas, e podemos dizer também que vai ao encontro do que o mercado traz de nas principais linguagens utilizadas em ambientes corporativos (ex: Java e DotNET).
Exemplos:

function arraysSum(array ...$arrays): array{
    return array_map(
function(array $array): int {
            return rray_sum($array);
        },
$arrays);

}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

Para facilitar segue abaixo uma lista dos tipo válidos e quando eles foram incluídos no PHP.

Tipo Descrição Versão do PHP
Classe/interface name O parâmetro precisa ser uma instância da classe ou interface informada. PHP 5.0.0
self O parâmetro precisa ser uma instância da mesma classe onde o método está definido. PHP 5.0.0
array O parâmetro precisa ser um array. PHP 5.1.0
callable O parâmetro precisa ser um callable válido. PHP 5.4.0
bool O parâmetro precisa um booleano válido. PHP 7.0.0
float O parâmetro precisa ser um ponto flutuante válido. PHP 7.0.0
int O parâmetro precisa ser um inteiro válido. PHP 7.0.0
string O parâmetro precisa ser uma string válida. PHP 7.0.0

A próxima novidade é uma simplificação da maneira mais utilizada do operador ternário, aquela velha checagem de “se o valor for nulo retorna alguma coisa, se não retorna o próprio valor”. Exemplo:

// Recupera o valor de $_GET['user'] e retorna 'nobody'
// Caso o valor não exista.
$username = $_GET['user'] ?? 'nobody';
// O código acima é equivalente a:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

Esse operador novo “??” está sendo chamado de operador de coalescência nula.

Operador de “nave espacial”, pelo menos esse cara tem um nome mais legalzinho, pelo menos melhor que o anterior. A ideia é simplificar a comparação de valores. Exemplo:

echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

Como dá pra ver se os valores foram iguais o retorno será “0”, se o valor da esquerda for menor será retornado “-1” e quando o da esquerda for maior será retornado “1”.

Então é isso galera, existem várias outras novidades no PHP 7 e vale a pena conferir na página do projeto PHP, essas são as que considero mais relevantes e mais expressivas na utilização do dia-a-dia.

Até a próxima.

Comentários