Neste post vamos aprender como declarar propriedades no construtor PHP, recurso também chamado de promoção de propriedade que pode ser usado a partir da versão 8 da linguagem PHP.
Curso PHP - Novidades do PHP 8.0
Conhecer o cursoO que é promoção de propriedade
A promoção de propriedade consiste basicamente em realizar 3 ações de forma automática na declaração do construtor de uma classe:
- Declara as propriedades na classe;
- Recebe os valores que serão definidos;
- Atribui esses valores a propriedade da classe.
Isso evita que nossas classe tenham uma série de linhas para realizar uma tarefa simples.
Qual utilidade prática da promoção de propriedades no PHP
Na prática, a promoção de propridade nos permite declarar e atribuir valores a propriedades de uma classe usando bem menos linhas. Isso é muito interessante, pois muitas classes precisam realizar esta tarefa, principalmente pelo uso da injeção de dependência.
Veja o exemplo abaixo, uma classe que possui 2 propriedade, só a parte de declaração e atribuição via construtor ocupa 21 linhas de código:
<?php
namespace Cliente\Actions;
use Cliente\Tasks\GeraToken;
use Cliente\Tasks\CadastraUsuario;
class CadastraCliente
{
/**
* Propriedade da task cadastrar usuario
*/
private CadastraUsuario $cadastraUsuario;
/**
* Propriedade da task gerar token
*/
protected GeraToken $geraToken;
/**
* @param CadastraUsuario $cadastraUsuario
* @param GeraToken $geraToken
*/
public function __construct(
CadastraUsuario $cadastraUsuario,
GeraToken $geraTokenTask
)
{
$this->cadastraUsuario = $cadastraUsuario;
$this->geraToken = $geraToken;
}
}
O exemplo acima possui apenas duas propriedades. Em classes que precisam declarar e receber valores em várias propriedades, a quantidade de código antes do primeiro método fica bem grande.
Sintaxe para declaração de propriedades no construtor PHP
A promoção de propriedades torna o código muito mais simples e legível. O mesmo código do exemplo anterior pode ser definido do seguinte modo:
<?php
namespace Cliente\Actions;
use Cliente\Tasks\GeraToken;
use Cliente\Tasks\CadastraUsuario;
class CadastraCliente
{
/**
* @param CadastraUsuario $cadastraUsuario
* @param GeraToken $geraToken
*/
public function __construct(
private CadastraUsuario $cadastraUsuario,
protected GeraToken $geraToken
) {}
}
Basicamente única coisa que precisamos é declarar a visibilidade da propriedade na hora de definir o parâmetro no construtor. Desse modo ele já realiza todo o processo, tornando o código muito mais limpo.
Formação Desenvolvedor PHP
Conhecer a formaçãoConsiderações Finais
Recursos que permitem escrever código mais limpo, como é o caso da promoção de propriedades e recursos que aumentam a legibilidade do código, como é o caso dos parâmetros nomeados no PHP são extremamente importantes. Apesar de serem recursos extremamente novos, em breve devem se tornar padrão na maioria dos projetos.