Pular para conteúdo

Aula 02 - Fundamentos de PHP e POO 🏗️

🎯 Objetivo da Aula

Aprofundar nos fundamentos da linguagem PHP, revisando estruturas de controle, tipos de dados e mergulhando na Programação Orientada a Objetos (POO) moderna aplicada ao ecossistema Laravel.


💎 Estruturas Essenciais

O PHP 8 trouxe melhorias sintáticas que tornam o código mais limpo e seguro.

Match Expression (PHP 8.0+)

O match é uma alternativa poderosa e mais segura ao switch.

$status = 200;
$mensagem = match($status) {
    200, 300 => 'Sucesso',
    400, 500 => 'Erro',
    default => 'Status Desconhecido',
};


🧩 Programação Orientada a Objetos (POO)

O Laravel é construído totalmente sobre POO. Entender classes, objetos, herança e interfaces é fundamental.

Anatomia de uma Classe Moderna

No PHP 8.2+, podemos usar classes readonly e promoção de propriedades no construtor.

<?php

namespace App\Models;

class Usuario {
    // Promoção de Propriedade no Construtor
    public function __construct(
        public string $nome,
        public string $email,
        private int $idade
    ) {}

    public function apresentar(): string {
        return "Olá, eu sou {$this->nome}.";
    }
}

📊 Diagrama de Classes (Exemplo)

Veja como organizamos a estrutura de herança em um sistema de ensino:

classDiagram
    class Pessoa {
        +String nome
        +String email
        +falar()
    }
    class Aluno {
        +String matricula
        +estudar()
    }
    class Professor {
        +String especialidade
        +ensinar()
    }
    Pessoa <|-- Aluno
    Pessoa <|-- Professor

📂 Namespaces e Autoloading

Namespaces resolvem o conflito de nomes de classes e, junto com a PSR-4, permitem que o Composer carregue seus arquivos automaticamente.

$ composer dump-autoload

🧠 Blocos de Destaque

Atenção com Tipagem

Sempre ative o modo estrito no topo dos seus arquivos para evitar coerções inesperadas: declare(strict_types=1);


🛠️ Exercícios Progressivos

  1. Básico: Crie uma classe Carro com propriedades marca e modelo.
  2. Intermediário: Implemente um método que calcule a idade de um objeto Pessoa baseado no ano de nascimento.
  3. Desafio: Crie uma Interface chamada Notificacao e duas classes Email e SMS que a implementem.

🚀 Mini-Projeto da Aula

Sistema de Cadastro Simples (CLI): Desenvolva uma pequena aplicação de terminal onde o usuário pode cadastrar "Produtos" em uma lista (array de objetos). Use POO para representar o Produto e uma classe Repositorio para gerenciar a lista.


Próxima Aula: Introdução ao Framework Laravel