Roadmap de PHP/Laravel
Caminho do básico ao Senior. Cada bloco aponta para o capítulo correspondente do handbook.
Junior Developer
Fundamentos de PHP
Sintaxe
- Tipos — tipos primitivos, type casting
- Variáveis — escopo, constantes
- Operadores — aritméticos, lógicos, comparação
- Estruturas de controle — if, switch, loops
Funções e estruturas de dados
- Funções — declaração, parâmetros, retorno
- Arrays — indexados, associativos, funções de array
- Strings e regex — strings, PCRE
Programação orientada a objetos
OOP básico
- Classes e objetos — instância, propriedades, métodos
- Herança — extends, override
- Interfaces — contratos, implementação múltipla
- Classes abstratas — abstração, template method
Recursos avançados
- Traits — reuso de código
- Magic methods — __construct, __get, __set, __call
- Late static binding — self vs static
- Visibilidade — public, protected, private
PHP Advanced
Recursos modernos
- Namespaces — organização do código, autoload
- Composer e PSR-4 — dependências
- Exceções — erros, custom exceptions
- Padrões PSR — PSR-1, PSR-2, PSR-4, PSR-12
PHP 8+
- PHP 8 features — Named arguments, Match, Attributes
- Generators — yield, menos memória
- Reflection — metaprogramação
Git
- Git Basics — init, add, commit, push, pull
- Branching Strategies — feature branches
- Rebase vs Merge — quando usar cada um
- Git Flow — workflow de time
- Conflict Resolution — resolver conflitos
Laravel Basics
Arquitetura do framework
- Arquitetura do Laravel — MVC, estrutura do projeto
- Service Container — container de DI
- Service Providers — registro de serviços
- Facades — acesso estático aos serviços
Peças principais
- Routing — rotas, grupos, parâmetros
- Middleware — tratamento do request
- Controllers — regra de negócio
- Request/Response — HTTP
Middle Developer
Laravel Advanced
Dados
- Eloquent Relationships — relações entre models
- Query Builder — montar queries
- Migrations e Seeders — versionar o banco
- Validation — validar dados
Processamento assíncrono
- Events & Listeners — modelo de eventos
- Jobs & Queues — tarefas em background
- Notifications — notificações
API
- API Resources — transformar dados
Bancos de dados
SQL
- SQL Basics — SELECT, JOIN, subqueries
- Aggregate Functions — COUNT, SUM, AVG
- Indexes — tipos de índice, otimização
- Transactions — ACID, isolation levels
- Normalization — formas normais
Otimização
- N+1 Query Problem — eager loading
- Query Optimization — EXPLAIN, índices
- Caching — cache de query
Testing
- Unit Tests — testar peça isolada
- Feature Tests — testes de integração
- TDD — desenvolver pelo teste
- Mocking & Stubbing — mocks, stubs
- PHPUnit — framework de teste
Security
- XSS — se proteger de XSS
- CSRF — tokens, proteger formulário
- SQL Injection — queries parametrizadas
- Authentication — autenticar usuário
- Authorization — permissão, policies
- OWASP Top 10 — falhas mais comuns
API Development
- REST API — princípios REST
- API Versioning — versionar a API
- Rate Limiting — limitar request
- CORS — request cross-origin
- Swagger Documentation — documentar
Docker
- Docker Basics — containers, images
- Dockerfile — criar image
- Docker Compose — app multi-container
- CI/CD — automatizar o deploy
Senior Developer
Database Advanced
Recursos avançados
- Replication — replicar dados
- Sharding — escala horizontal
- Window Functions — funções analíticas
- Isolation Levels — níveis de isolamento
- Locks — locks, deadlocks
- JSONB — JSON no PostgreSQL
- Materialized Views — views materializadas
- Partitioning — particionar tabela
Otimização
- Normalization — normalização
- Denormalization — desnormalização
- Big Data — volume grande
Caching
- Caching Strategies — estratégias de cache
- Redis — cache in-memory
- Memcached — cache distribuído
- HTTP Cache — cache do browser
- OPcache — cache de bytecode
Performance
- Caching — aplicar cache
- Database Optimization — otimizar o banco
- Query Optimization — otimizar query
- PHP Optimization — otimizar PHP
- Scaling — escalar o app
Principles & Patterns
Princípios
- KISS, DRY, YAGNI — princípios básicos
- GRASP — quem fica com cada responsabilidade
Patterns de arquitetura
- MVC — Model-View-Controller
- Repository Pattern — abstrair dados
- Service Layer — regra de negócio
- SOLID — princípios de OOP
- DDD — Domain-Driven Design
- CQRS — separar comando e query
- Event Sourcing — guardar eventos
- Dependency Injection — injeção de dependência
Design Patterns
- Creational Patterns — patterns criacionais
- Structural Patterns — patterns estruturais
- Behavioral Patterns — patterns comportamentais
Message Brokers
- RabbitMQ — filas de mensagem
- Kafka — event streaming
- Redis Pub/Sub — publish/subscribe
- Comparison — comparar as opções
Microservices
- Monolith vs Microservices — escolher a arquitetura
- API Gateway — porta de entrada única
- Circuit Breaker — se proteger de falha
- Service Discovery — achar o serviço
- Saga Pattern — transação distribuída
Soft Skills
- Code Review — revisar código
- Agile & Scrum — método de trabalho
- Tech Interview — passar na entrevista
- Documentation — documentar código
Prática
Depois da teoria, fixe na prática:
- Coding Challenges — problemas de algoritmo
- System Design — desenhar sistema
- Debugging — achar e corrigir bug
- Refactoring — refatorar
- Real World Cases — casos reais
Projetos de bolso (só neste fork)
Gerados por IA. Não existem no handbook original da CodeMate.
- Páginas com sessão — PHP puro, no ar
- API MVC + SOLID — PHP puro, no ar
- Symfony — CRUD, no ar
- Laravel básico — em desenvolvimento
- Laravel completo — em desenvolvimento
Comece em Projetos.
Extra
Junior
- Escreva código todo dia
- Faça pet projects
- Leia código dos outros no GitHub
- Entre em code review
Middle
- Estude a arquitetura de projetos reais
- Pratique TDD
- Otimize performance
- Ensine o time
Senior
- Desenhe a arquitetura
- Mentore juniors
- Estude práticas de DevOps
- Acompanhe o que a indústria está fazendo
Com mentor O programa de mentoria da CodeMate encurta esse caminho: consultoria, code review, mock interview e ajuda com a vaga. Detalhes em codemate.team.