PHP 8.0 - Constructor Property Promotion para simplificar o código


Constructor Property Promotion é um recurso que está disponivel a partir da versão 8.0 do PHP. Com esse recurso o código fica mais simples na definição das propriedades de uma classe, pois dá para definir tudo no construtor, o que vira uma mão na roda quando se trabalha com injeção de dependência, por exemplo.

Segue um exemplo de classe usando Constructor Property Promotion:

<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class Quote
{
	public function __construct(
		private string $text,
		private string $movie
	){}

	public function getText(): string
	{
		return $this->text;
	}

	public function getMovie(): string
	{
		return $this->movie;
	}
}

É uma classe simples com os dados de uma entidade, os parâmetros definidos no contrutor são também as propriedades definidas para essa classe, tendo o mesmo nome. Isso elima muito código de inicialização de propriedades no construtor, antes ficaria da seguinte forma:

<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class Quote
{
	private $text;
	private $movie;

	public function __construct(
		string $text,
		string $movie
	){
		$this->text = $text;
		$this->movie = $movie;
	}

	public function getText(): string
	{
		return $this->text;
	}

	public function getMovie(): string
	{
		return $this->movie;
	}
}

Ou seja, teria muito mais código e teria que escrever mais linhas, o que mostra como esse novo recurso do PHP é algo simplificador. E mostra uma evolução constante da linguagem para trabalhar com Orientação a Objetos. É isso, nesse post eu queria trazer de forma simples e direta o uso de Constructor Property Promotion.


ver todos os posts
Publicado em 29/09/2023