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.

Elton Fonseca 17 de novembro de 2020

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 de PHP - Novidades do PHP 8.0
CONHEÇA 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
Nesta formação você aprenderá todos os conceitos da linguagem PHP, uma das mais utilizadas no mercado. Desde de conceitos de base, até características mais avançadas, como orientação a objetos, práticas de mercado, integração com banco de dados. Ao final, você terá conhecimento para desenvolver aplicações PHP usando as práticas mais modernas do mercado.
CONHEÇA 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.

Deixe seu comentário

Conheça o autor desse artigo

  • Foto Autor Elton Fonseca
    Elton Fonseca

    Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduando 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

    Posts desse Autor

Artigos relacionados