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
48
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
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
200
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
3
480
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
9
7.7k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
16
5.9k
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
110
Retriever と Reranker、結局どうする?
kazuaki
2
670
制約理論(ToC)入門 2026版
recruitengineers
PRO
5
1.4k
ブラウザ研修 2026
recruitengineers
PRO
3
540
事業価値と Engineering 2026年度版
recruitengineers
PRO
36
18k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
450
タクシーアプリ『GO』の実践的データ活用〜位置情報データの収集とStreamlitでの可視化〜
mot_techtalk
2
200
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
470
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Speed Design
sergeychernyshev
33
2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
390
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Facilitating Awesome Meetings
lara
57
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
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