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
32
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
43
Retome o controle do seu analytics com Matomo
joubertredrat
0
44
#tbt do PHP, a evolução da linguagem nos últimos 30 anos
joubertredrat
0
43
DevBox, o meu pequeno projeto open source para o dia a dia do dev
joubertredrat
0
45
O poder do Object Calisthenics no PHP
joubertredrat
0
150
Playing with Docker and Docker Compose
joubertredrat
0
160
Why migrate your application to microservices?
joubertredrat
0
34
Por que migrar sua aplicação para Microserviços?
joubertredrat
0
38
Uso prático de fakes para mocks no Golang
joubertredrat
0
89
Other Decks in Technology
See All in Technology
SDDで⾒える、AIコーディングの"内訳"
lycorptech_jp
PRO
0
320
大規模環境でどのように監視を実現する?
yuobayashi
1
120
データ基盤構築・運用の現場から 〜 Snowflake Intelligence 導入で変わった、データ活用の未来 〜
wonohe
0
150
その英語学習、AWSで代替できませんか?
suzutatsu
1
210
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
1
270
Slack MCPでインシデント対応とFAQ生成を加速する:社内ワークショップの実践
lycorptech_jp
PRO
0
290
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.5k
エムスリーテクノロジーズ株式会社 エンジニア向け紹介資料 / M3 Technologies Company Deck
m3_engineering
0
220
コーディングAIが導くリスクベースド探索的テストの実践
lycorptech_jp
PRO
1
300
まだ道半ば、AI-DLCを歩み始めている話
news_it_enj
2
110
論文紹介:Pixal3D (SIGGRAPH 2026)
tenten0727
0
690
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
47k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.1k
How to Talk to Developers About Accessibility
jct
2
200
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
We Have a Design System, Now What?
morganepeng
55
8.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
First, design no harm
axbom
PRO
2
1.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
360
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
510
Claude Code のすすめ
schroneko
67
220k
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