1
resposta

[Dúvida] Construct

Eu nao entendi como o construct() de fato funciona. Alguem poderia me explicar?

1 resposta

Oii, Paulo!

Essa é uma dúvida muito comum quando estamos começando na Orientada a Objetos, pois o construtor parece um pouco "mágico" por não precisarmos chamá-lo manualmente como fazemos com outros métodos.

Pra facilitar a compreensão, imagine que a Classe é uma planta de uma casa e o Objeto é a casa construída. O construtor é o momento em que os pedreiros recebem os materiais (dados) para levantar as paredes. Sem esses materiais logo no início, a casa ficaria incompleta ou "inconsistente".

O que é o método construct?

O construtor é um método especial que o PHP executa automaticamente no exato momento em que você usa a palavra-chave new.

1. Garantia de integridade

Sem um construtor, você poderia criar um filme "vazio":

$meuFilme = new Filme(); // o filme existe, mas não tem nome nem ano.

Com o construtor, você obriga que o objeto nasça com as informações necessárias:

$meuFilme = new Filme("Thor: Ragnarok", 2017, "Ação");

2. De onde vem os dados?

Quando você passa valores entre os parênteses de new Filme(...), o PHP os envia diretamente para a função public function __construct. Lá dentro, o $this->nome = $nome pega o que você enviou e guarda dentro da "caixinha" (propriedade) do objeto.

Evolução da sintaxe (promoção de atributos):

No PHP moderno (a partir da versão 8.0), existe uma forma simplificada que você viu na aula. Veja a diferença:

  • Forma antiga: Você declarava a variável lá no topo, recebia no construtor e depois atribuía manualmente.
  • Forma nova (Promotion): Ao colocar private ou public dentro dos parênteses do construtor, o PHP faz tudo isso de uma vez só.
public function __construct(
    private string $nome, // 1. Cria a propriedade privada
    private int $anoLancamento // 2. Já guarda o valor recebido nela
) {
    // 3. O corpo pode até ficar vazio ou inicializar outras coisas, como $this->notas = [];
}

Por que usar?

  • Segurança: Você garante que nenhum objeto será criado sem os dados mínimos.
  • Organização: Centraliza a preparação do objeto em um único lugar.
  • Praticidade: Evita ter que chamar 5 ou 6 métodos "setters" toda vez que criar um novo item.

Pra resumir: o construtor é a "certidão de nascimento" do objeto, onde você já define quem ele é no momento em que ele passa a existir na memória do computador.

Espero ter te ajudado.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!