Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Programação defensiva com PHP
Search
Joubert RedRat
September 15, 2025
Technology
29
0
Share
Programação defensiva com PHP
Joubert RedRat
September 15, 2025
More Decks by Joubert RedRat
See All by Joubert RedRat
Testes de integração com Testcontainers
joubertredrat
0
39
Retome o controle do seu analytics com Matomo
joubertredrat
0
39
#tbt do PHP, a evolução da linguagem nos últimos 30 anos
joubertredrat
0
39
DevBox, o meu pequeno projeto open source para o dia a dia do dev
joubertredrat
0
40
O poder do Object Calisthenics no PHP
joubertredrat
0
150
Playing with Docker and Docker Compose
joubertredrat
0
150
Why migrate your application to microservices?
joubertredrat
0
32
Por que migrar sua aplicação para Microserviços?
joubertredrat
0
34
Uso prático de fakes para mocks no Golang
joubertredrat
0
87
Other Decks in Technology
See All in Technology
New CBs New Challenges
ysuzuki
1
170
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」ご紹介資料
laysakura
0
1.6k
レガシーシステムをどう次世代に受け継ぐか
tachiiri
0
330
自己組織化を試される緑茶ハイを求めて、今日も全力であそんで学ぼう / Self-Organization and Shochu Green Tea
naitosatoshi
0
330
インフラを Excel 管理していた組織が 3 ヶ月で IaC 化されるまで
geekplus_tech
3
170
ストライクウィッチーズ2期6話のエイラの行動が許せないのでPjMの観点から何をすべきだったのかを考える
ichimichi
1
320
2026年春から始めるOpenTelemetry | sogaoh's LT @ PHP Conference ODAWARA 2026
sogaoh
PRO
0
100
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
340
Databricksで構築するログ検索基盤とアーキテクチャ設計
cscengineer
0
120
シン・リスコフの置換原則 〜現代風に考えるSOLIDの原則〜
jinwatanabe
0
170
プロジェクトマネジメントは AIでどう変わるか?
mkg5383
0
130
ふりかえりを 「あそび」にしたら、 学習が勝手に進んだ / Playful Retros Drive Learning
katoaz
0
440
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
The Limits of Empathy - UXLibs8
cassininazir
1
290
Exploring anti-patterns in Rails
aemeredith
3
310
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Claude Code のすすめ
schroneko
67
220k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
270
A Modern Web Designer's Workflow
chriscoyier
698
190k
Crafting Experiences
bethany
1
110
How to Talk to Developers About Accessibility
jct
2
170
Context Engineering - Making Every Token Count
addyosmani
9
800
Transcript
Programação defensiva com PHP
Quem sou eu? Sou este ai https://creativecommons.org/licenses/by-sa/4.0/ https://redrat.com.br
Eu não sou uma entidade divina O que eu falo
não é uma verdade absoluta, não tenha medo de questionar
Programação defensiva O que deve ser?
Programação defensiva
Programação defensiva • Antecipação e resolução de possíveis problemas •
Prevenção de travamentos • Maior garantia de estabilidade e segurança • Confiabilidade e robustez
None
None
Esse trecho de código funciona?
Sim, mas pode ser melhor
None
None
Técnicas usadas Validação no Construtor Validação do e-mail imediatamente na
criação do objeto Type Hinting Tipagem do $email como uma string
Técnicas usadas Imutabilidade Propriedade readonly impede alterações após criação Validação
de Formato Uso do FILTER_VALIDATE_EMAIL para verificar string como formato válido
Técnicas usadas Fail Fast Lançamento de exceção por dados inválidos
DTO Pattern Separação da validação de dados da lógica de negócio
Técnicas Comuns
Validação de entrada de dados • Verificar campos obrigatórios •
Validar formato (e-mail, CPF) • Limitar tamanho de strings • Garantir tipo de dado (número)
Tratamento de Exceções • Capturar exceções • Lidar com falhas
de rede • Registrar exceções inesperadas
Fail-first / Fail-early • Detectar entradas incorretas rapidamente • Interromper
a execução imediatamente • Evitar propagação de dados inválidos • Garantir maior confiabilidade do sistema
Segurança • Sanitizar entradas (SQL Injection) • Escapar saídas (XSS)
• Validar permissões de usuário • Criptografar dados sensíveis
Robustez de Funções e Métodos • Checar argumentos nulos •
Validar estado do objeto • Garantir pré-condições • Verificar pós-condições
Benefícios • Reduzir erros e falhas • Aumentar a estabilidade
do software • Reforçar a segurança da aplicação • Facilitar a manutenção e melhorar a coesão • Otimizar a experiência do usuário
Perguntas?
Esta e outras palestras https://bit.ly/joubertredrat-palestras
Obrigado