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
34
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
47
Retome o controle do seu analytics com Matomo
joubertredrat
0
47
#tbt do PHP, a evolução da linguagem nos últimos 30 anos
joubertredrat
0
51
DevBox, o meu pequeno projeto open source para o dia a dia do dev
joubertredrat
0
48
O poder do Object Calisthenics no PHP
joubertredrat
0
160
Playing with Docker and Docker Compose
joubertredrat
0
160
Why migrate your application to microservices?
joubertredrat
0
40
Por que migrar sua aplicação para Microserviços?
joubertredrat
0
42
Uso prático de fakes para mocks no Golang
joubertredrat
0
93
Other Decks in Technology
See All in Technology
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
0
180
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
160
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
1.2k
QAタスクをスキル化したいときに考えること
aomoriringo
0
120
コンポーネント名には何を含めるべきなのか? / what-should-be-included-in-component-names
airrnot1106
0
160
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
400
Azure Durable Functions で作った NL2SQL Agent の精度向上に取り組んだ話/aidevday2026
thara0402
0
120
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
550
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.5k
害獣害虫を自動判別! ペストコントロール支援ビジネス成功のヒント【SORACOM Discovery 2026】
soracom
PRO
0
120
なぜMIXIはゼロトラスト基盤として クラウドフレアを選んだのか - Cloudflare Peer Point SASE User Voices
mixi_engineers
PRO
2
120
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
31
18k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Music & Morning Musume
bryan
47
7.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
470
GitHub's CSS Performance
jonrohan
1033
470k
GraphQLとの向き合い方2022年版
quramy
50
15k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Making Projects Easy
brettharned
120
6.7k
Mind Mapping
helmedeiros
PRO
1
290
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
430
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
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