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.
🧩 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.
🧠 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
- Básico: Crie uma classe
Carrocom propriedadesmarcaemodelo. - Intermediário: Implemente um método que calcule a idade de um objeto
Pessoabaseado no ano de nascimento. - Desafio: Crie uma
InterfacechamadaNotificacaoe duas classesEmaileSMSque 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.