PHP

Declarando propriedades no construtor PHP

Aprenda como declarar propriedades e atribuir diretamente no construtor, recurso também conhecido como promoção de propriedades, disponível a partir do PHP8.

há 3 anos 4 meses

Formação Desenvolvedor PHP
Conheça a formação em detalhes

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.

PHP - Novidades do PHP 8.0
Curso PHP - Novidades do PHP 8.0
Conhecer o curso

O 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.

Desenvolvedor PHP
Formação Desenvolvedor PHP
Conhecer a formação

Consideraçõ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.

Autor(a) do artigo

Elton Fonseca
Elton Fonseca

Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. @eltonfonsecadev

Todos os artigos

Artigos relacionados Ver todos