PHP 7.X — Novidades

Fernando Henrique dos Santos
Dev Cave
Published in
2 min readMar 8, 2017

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.

TipoDescriçãoVersão do PHPClasse/interface nameO parâmetro precisa ser uma instância da classe ou interface informada.PHP 5.0.0selfO parâmetro precisa ser uma instância da mesma classe onde o método está definido.PHP 5.0.0arrayO parâmetro precisa ser um array.PHP 5.1.0callableO parâmetro precisa ser um callable válido.PHP 5.4.0boolO parâmetro precisa um booleano válido.PHP 7.0.0floatO parâmetro precisa ser um ponto flutuante válido.PHP 7.0.0intO parâmetro precisa ser um inteiro válido.PHP 7.0.0stringO 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.

--

--