Na nova versão, agora é suportado alguns tipos de expressões de dados primários envolvendo tipos numéricos, strings e constantes no contexto onde antigamente o PHP aceitava somente valores estáticos, como no caso de definições de constantes. Abaixo um exemplo
const UM = 1;
const DOIS = UM * 2;
class C {
const TRES = TWO + 1;
const UM_TERCO = UM / self::TRES;
const SENTENCA = 'O valor de TRES é '.self::TRES;
public function f($a = UM + self::TRES) {
return $a;
}
}
//Será apresentado o valor 4
echo (new C)->f()."\n";
//Será apresentado a seguinte saída: "O valor de TRES é 3"
echo C::SENTENCA;
Outro novo recurso desta nova versão é a introdução de funções com argumentos variáveis definidos para serem recebidos por um dado argumento com o uso da simbologia ‘…’, conforme abaixo exemplificado:
function f($req, $opt = null, ...$params) {
//$params será um array contendo os argumentos restantes.
printf('$req: %d; $opt: %d; number of params: %d'."\n", $req, $opt, count($params));
}
//A saída da função será req: 1; $opt: 0; number of params: 0
f(1);
//A saída da função será $req: 1; $opt: 2; number of params: 0
f(1, 2);
//A saída da função será $req: 1; $opt: 2; number of params: 1
f(1, 2, 3);
//A saída da função será $req: 1; $opt: 2; number of params: 2
f(1, 2, 3, 4);
//A saída da função será $req: 1; $opt: 2; number of params: 3
f(1, 2, 3, 4, 5);
Um outro possível uso para o operador ‘…’ é preencher o restante de uma lista de argumento de função, conforme exemplo abaixo:
<?php
function add($a, $b, $c) {
return $a + $b + $c;
}
function op($a, $b, $c) {
return $a + $b * $c;
}
$operators = [2, 3];
//Será apresentado 6 como resultado
echo add(1, ...$operators);
//Será apresentado 7 como resultado
echo op(1, ...$operators);




