Novos recursos no PHP5.6

image_pdfimage_print

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);
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!