Da trilha de PHP Este conceito ainda não saiu como card do dia. ir para o card de hoje

PHP POO Intermediário

Classes e objetos

Em PHP, uma classe é um molde que define propriedades (dados) e métodos (comportamentos) que os objetos terão. Um objeto é uma instância dessa classe, criada com a palavra-chave new. Cada objeto tem seu próprio conjunto de valores para as propriedades, mas compartilha os métodos definidos na classe.

O construtor é um método especial chamado automaticamente quando um objeto é criado. Ele serve para inicializar as propriedades do objeto. A partir do PHP 8, a promoção de construtor permite declarar e inicializar propriedades diretamente na lista de parâmetros do construtor, reduzindo código repetitivo.

Dentro dos métodos, a pseudo-variável $this refere-se ao objeto atual, permitindo acessar suas propriedades e métodos. É essencial para diferenciar propriedades de parâmetros e para chamar outros métodos do mesmo objeto.

Pontos-chave

  • Uma classe define propriedades e métodos; um objeto é uma instância criada com new.
  • O construtor __construct() é chamado automaticamente na criação do objeto para inicializar propriedades.
  • A promoção de construtor (PHP 8+) declara e inicializa propriedades diretamente nos parâmetros do construtor.
  • $this referencia o objeto atual e é usado para acessar propriedades e métodos dentro da classe.
  • Propriedades e métodos podem ter visibilidade (public, protected, private) controlando o acesso.
produto.php
<?php

class Produto {
    // Propriedades com promoção de construtor (PHP 8+)
    public function __construct(
        private string $nome,
        private float $preco,
        private int $quantidade = 0
    ) {}

    // Método para exibir informações do produto
    public function exibir(): string {
        return "{$this->nome}: R$ " . number_format($this->preco, 2, ',', '.') . " ({$this->quantidade} unidades)";
    }

    // Método para adicionar estoque
    public function adicionarEstoque(int $qtd): void {
        if ($qtd > 0) {
            $this->quantidade += $qtd;
        }
    }

    // Método para calcular valor total em estoque
    public function valorTotal(): float {
        return $this->preco * $this->quantidade;
    }
}

// Criando objetos
$p1 = new Produto("Caneta", 2.50, 10);
$p2 = new Produto("Caderno", 15.90);

// Usando métodos
$p2->adicionarEstoque(5);

echo $p1->exibir() . PHP_EOL;
echo $p2->exibir() . PHP_EOL;
echo "Valor total em estoque (Caderno): R$ " . number_format($p2->valorTotal(), 2, ',', '.') . PHP_EOL;

Exercícios

  1. 1
    Fácil

    Criando uma classe Pessoa

    Crie uma classe Pessoa com propriedades nome e idade, um construtor que as inicializa e um método apresentar() que retorna uma string no formato "Olá, meu nome é [nome] e tenho [idade] anos.". Instancie um objeto e exiba a apresentação.

    Resolver
  2. 2
    Médio

    Conta bancária com promoção de construtor

    Crie uma classe ContaBancaria usando promoção de construtor para as propriedades titular (string) e saldo (float, padrão 0). Adicione métodos depositar(float $valor) e sacar(float $valor) que atualizam o saldo e retornam o novo saldo. O método sacar não deve permitir saque maior que o saldo. Exiba o saldo após operações.

    Resolver
  3. 3
    Desafio

    Sistema de carrinho de compras

    Crie uma classe Produto com propriedades nome (string) e preco (float) usando promoção de construtor. Crie uma classe Carrinho que mantém um array de produtos. O Carrinho deve ter métodos adicionarProduto(Produto $produto), removerProduto(string $nome) e total(): float. O método removerProduto deve remover o primeiro produto com o nome especificado. Exiba o total antes e depois de remover um produto.

    Resolver

Continue estudando