3 Recursos do PHP 7 que talvez você não conheça

O PHP 7 trouxe muitas novidades: Operador de coalescência nula, Classes anônimas, Declaração do tipo retornado, etc. O uso desses recursos pode trazer mais produtividade e, claro, sempre mais conhecimento!

Atualizado em 13/05/2020
Compartilhe

O PHP 7 fez com que o PHP evoluísse bastante. Veja abaixo alguns recursos interessantes que todo programador PHP deve conhecer.

1. Operador de coalescência nula

Null coalescing operator

Agora, ao invés de escrever:
$name = isset( $_COOKIE['name'] ) ? $_COOKIE['name'] : 'John Doe';
é possível escrever:

/**
 * Old way.
 */
//echo isset( $_COOKIE['name'] ) ? $_COOKIE['name'] : 'John Doe';

/**
 * New way.
 */
$name = $_COOKIE['name'] ?? 'John Doe';

// Outputs 'John Doe'.
echo $name;

$_COOKIE['name'] = 'Pedro';

// Outputs 'Pedro'.
echo $_COOKIE['name'] ?? 'John Doe';

Essa sintaxe é uma alternativa à função isset, e não se comporta da mesma maneira como a função empty. Ou seja, no código acima se $_COOKIE['name'] fosse 0 ou uma string vazia, então, seria impresso na tela o 0 ou a string vazia.

E o operador de coalescência nula deve ser escrito em uma única linha e pode ser usado múltiplas vezes, em cadeia:

// Outputs 'Content-Type: text/html; charset=utf-8'.
echo $email['headers']['content-type'] ?? $default['headers']['content-type'] ?? 'Content-Type: text/html; charset=utf-8';

2. Classes anônimas

Anonymous classes

Veja abaixo um exemplo de como é possível escrever uma Classe anônima pra validar, digamos, de uma forma mais elegante um formulário, mas sem ter que criar um arquivo exclusivo para a Classe:

$data = $_POST ?? [];

$form_validation = new class( $data ) {
	public $is_submission = true;

	private $data;

	public function __construct( $data ) {
		if ( ! $data ) {
			$this->is_submission = false;

			return;
		}

		$this->data = $data;
	}

	public function validate() {
		$data = $this->data;

		$required = [
			'name',
			'email',
		];

		foreach ( $data as $key => $value ) {
			unset( $required[ $key ] );
		}

		$missing_field = $required[0] ?? '';

		if ( $missing_field ) {
			throw new Exception( "The field $missing_field is missing." );
		}
	}
};

try {
	if ( $form_validation->is_submission ) {
		$form_validation->validate();
	}
} catch ( Exception $e ) {
	var_dump( $e->getMessage() );
}

3. Declaração do tipo retornado

Return type declarations

O exemplo de código abaixo declara a função get_query que por definição deve retornar uma instância da classe WP_Query.
O caractere ? é usado para definir, também, que a função pode retornar null (PHP 7.1+).
O uso desse recurso pode ser útil quando, por exemplo:

  1. Mesmo sem utilizar PHPDoc você quer que as IDEs façam auto complete. No código abaixo o PhpStorm entenderia que a variável $query é uma instância de WP_Query apenas por conta do uso da sintaxe de Return type declarations.
  2. Você quer imprimir erros quando a função não retornar o tipo que foi definido.
/**
 * @link https://www.php.net/manual/en/control-structures.declare.php
 */
declare( strict_types=1 );

function get_query(): ?WP_Query {
	global $wp_query;

	if ( $wp_query instanceof WP_Query ) {
		return $wp_query;
	}

	return null;
}

O PHP 7+ trouxe muitas outras novidades, deixe seu comentário abaixo e me diga o que você acha interessante eu colocar aqui.

E vale lembrar que o PHP 7.4, que deve ser lançado em Nov/2019, trará mais recursos ainda!

Por <a href='https://dpw.ninja/author/filipe/' rel='dofollow' class='dim-on-hover'>Filipe Seabra</a>
Por Filipe Seabra
Full Stack Web Developer.

Comentários