Jonathan Lamim (Convidado)
Jonathan Lamim (Convidado)

#1 PHP 7 – Mudanças básicas da linguagem

Compartilhe

Hoje começamos uma série de posts sobre o PHP 7, a nova (e tão aguardada) versão da linguagem mais utilizada por desenvolvedores web. Além do conteúdo de hoje, teremos muitas novidades sobre PHP 7 no blog da Umbler. Nos próximos posts abordaremos assuntos como: recursos obsoletos; sintaxe de variáveis; type hints; error handling;  mudanças relacionadas à orientação a objetos e performance.

O PHP 7 traz consigo um grande número de pequenas mudanças na linguagem, novos operadores, funções e mudanças e funções existentes e construtores.

Operadores

Foram adicionados 2 novos operadores ao PHP 7:

Operador Null Coalesce

Esse operador (??) retorna o operando à esquerda se não for nulo, caso contrário retorna o da direita. Algo interessante nesse operador é que ele não emitirá um erro se um dos operandos for uma variável não existente, algo similar à isset().

Exemplo:

//Usando o operador ternário combinado com a função isset()
$resultado = isset($operando) ? $operando : $operando2;

//Usando o novo operador Null Coalesce
$resultado = $operando ?? $operando2;

Os dois exemplos fazem a mesma coisa, e retornam o mesmo resultado porém, o segundo é bem mais enxuto do que o primeiro.

Operador de Comparação Combinada

Também chamado de “operador de nave espacial” (<=>) ele é o primeiro operador ternário do PHP. Ao invés de retornar apenas TRUE ou FALSE, ele pode retornar 3 valores distintos:

-1: se o operador da esquerda for menor que o da direita
0: se os operadores forem iguais
+1: se o operador da esquerda for maior que o da direita

Veja no exemplo a seguir o uso desse operador e do modo tradicional, em uma função que retorna a ordem dos argumentos passados a partir da comparação entre eles.

// Antes do PHP 7
function modo_tradicional($a, $b) {
return ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
}

// Pós PHP 7
function modo_php7($a, $b) {
return $a <=> $b;
}

O resultado final continua o mesmo, mas repare que a função ficou bem mais enxuta com o uso do operador de comparação combinada.

Array como constantes

Antes do PHP 7, contantes definidas com define() só poderiam conter valores escaláveis. Com o PHP 7, você pode definir uma matriz como constante. Veja o exemplo a seguir:

define('MATRIZ',['chave' => 'valor', 'chave2' => 'valor2']);

//Exibindo o valor
echo MATRIZ['chave']; //retorna valor

Função intdiv()/

Essa nova função executa adivisão de número inteiro de forma eficaz, o inverso
do operador módulo da divisão (%).

intdiv(8, 3); //retorna 2

Sessions

Agora é possível passar um array de configurações para a função session_start().

Também foi adicionado um novo parâmetro de configuração, chamado session.lazy_write, que permite que os dados sejam reescritos na sessão caso tenham sido alterados. Esse parâmetro vem por configurado por padrão como TRUE.

Veja a seguir um exemplo de como usar o array de configurações em session_start() e desabilitar o lazy_write.

session_start(['use_strict' => true, 'lazy_write' => false]);

dirname()

A função dirname() passou a aceitar um segundo parâmetro no PHP 7, que permite definir quantos níveis de diretório acima você deseja subir. Por exemplo, temos a seguinte estrutura de diretório:

/home/user/artigos/php

Queremos subir 2 níveis nesse diretório:

$caminho = "/home/user/artigos/php";
dirname($caminho, 2); //retorna /home/user

 

Quer ver todas as mudanças do PHP 7 na prática? Use-o na Umbler!
Jonathan Lamim (Convidado)
Jonathan Lamim (Convidado)