Notas de PHP e Web

Artigos curtos e práticos sobre PHP, Laravel, bancos de dados e engenharia web (site estático).

Artigos

Symfony components no PHP puro: por onde começar

PHP 10 de dezembro de 2025 symfony, composer, http, logging

PSR-12: consistência com ferramentas automáticas

Boas Práticas 25 de novembro de 2025 psr, lint, php, git

Documentando decisões técnicas: ADR em 10 linhas

Boas Práticas 25 de outubro de 2025 git, docs, design, refatoracao

HTTP timeouts: conect, read, e o que logar

Performance 7 de outubro de 2025 http, timeouts, api, debug

Segredos em produção: rotate, least privilege e armazenamento

Segurança 13 de setembro de 2025 secrets, env, tls, devops

Deploy blue/green: quando vale a pena

DevOps 16 de agosto de 2025 deploy, rollback, ci-cd, load-balancer

CLI no PHP: scripts confiáveis e cron

PHP 10 de agosto de 2025 cli, cron, logging, composer

MySQL vs Postgres: diferenças práticas no dia a dia

Banco de Dados 15 de julho de 2025 mysql, postgres, sql, indexes

SQL eficiente: evite SELECT * e colunas desnecessárias

Performance 18 de junho de 2025 sql, indexes, performance, profiling

TLS básico: headers e boas práticas

Segurança 3 de junho de 2025 tls, http2, security, headers

Observabilidade: métricas básicas para uma API

DevOps 30 de abril de 2025 observabilidade, logging, metrics, api

Health checks: readiness/liveness e timeouts

DevOps 7 de abril de 2025 devops, http, observabilidade, timeouts

Nginx + PHP-FPM: parâmetros que importam

DevOps 31 de março de 2025 nginx, php-fpm, timeouts, http2

Docker para PHP: multi-stage e imagens pequenas

DevOps 3 de março de 2025 docker, php-fpm, nginx, ci-cd

CI/CD para PHP: pipeline mínimo (lint → testes → build)

DevOps 8 de fevereiro de 2025 ci-cd, docker, phpunit, lint

Mocks e stubs: o mínimo necessário

Testes 26 de janeiro de 2025 phpunit, mocks, design, refatoracao

Testes de integração com banco: transações e fixtures pequenas

Testes 25 de dezembro de 2024 phpunit, postgres, migrations, sql

PHPUnit: organização de testes e nomes claros

Testes 16 de dezembro de 2024 phpunit, unit-tests, php, debug

Laravel: caching de config e rotas em produção

Laravel 20 de novembro de 2024 cache, laravel, performance, opcache

Laravel: middlewares para autenticação e rate limit

Laravel 25 de outubro de 2024 laravel, oauth, rate-limit, http

Laravel: Eloquent vs Query Builder (quando trocar)

Laravel 8 de outubro de 2024 eloquent, sql, performance, laravel

Laravel: filas (queues) e jobs confiáveis

Laravel 2 de setembro de 2024 laravel, queues, redis, workers

Laravel: validação com Form Requests

Laravel 19 de agosto de 2024 laravel, http, validation, api

Config por env vars: padrões e armadilhas

Boas Práticas 27 de julho de 2024 env, secrets, docker, config

Lint + análise estática: PHPStan/Psalm no dia a dia

Boas Práticas 30 de junho de 2024 static-analysis, phpstan, psalm, lint

Refatoração segura: passos pequenos + testes

Boas Práticas 9 de junho de 2024 refatoracao, phpunit, git, static-analysis

Versionamento de API: estratégia simples e previsível

Boas Práticas 19 de maio de 2024 api, rest, http, git

Idempotência em APIs: retries sem duplicar efeitos

Boas Práticas 11 de maio de 2024 api, http, rest, retries

Logs estruturados: contexto mínimo para depurar rápido

Boas Práticas 4 de abril de 2024 logging, monolog, debug, http

Conexões e pool: evitando saturar o banco

Banco de Dados 18 de março de 2024 postgres, mysql, php-fpm, performance

Migrações sem downtime: padrão de duas fases

Banco de Dados 6 de março de 2024 migrations, sql, postgres, mysql

Transações: quando usar e como evitar deadlocks

Banco de Dados 11 de fevereiro de 2024 sql, locks, postgres, transactions

Postgres JSONB: filtros úteis e índices

Banco de Dados 9 de janeiro de 2024 postgres, sql, indexes, jsonb

Postgres: índices compostos e como escolher ordem de colunas

Banco de Dados 4 de janeiro de 2024 postgres, indexes, sql, performance

Profiling em PHP: onde medir primeiro

Performance 28 de novembro de 2023 profiling, xdebug, php, debug

HTTP caching: ETag, Cache-Control e 304

Performance 8 de novembro de 2023 http, cdn, cache, http2

Paginação por cursor: por que é mais estável que LIMIT/OFFSET

Performance 23 de outubro de 2023 sql, postgres, api, performance

Evite N+1: sinais, diagnósticos e correções

Performance 6 de outubro de 2023 sql, orm, eloquent, profiling

Cache com Redis: TTL, invalidação e padrões comuns

Performance 3 de setembro de 2023 redis, cache, api, queues

OPcache: configuração recomendada para produção

Performance 15 de agosto de 2023 opcache, php-fpm, nginx, cache

CORS sem sofrimento: mental model e configuração

Segurança 3 de agosto de 2023 http, api, rest, cors

Uploads seguros: tipos, nomes, armazenamento e verificação

Segurança 14 de julho de 2023 security, http, php, uploads

Rate limiting: limitando abuso sem quebrar usuários reais

Segurança 11 de junho de 2023 rate-limit, api, nginx, http

JWT: quando faz sentido (e quando não)

Segurança 21 de maio de 2023 jwt, api, oauth, http

CSRF em formulários: checklist rápido

Segurança 12 de maio de 2023 csrf, http, cookies, security

Sessões e cookies: flags seguras, SameSite e expiração

Segurança 18 de abril de 2023 sessions, cookies, tls, http

Validação de entrada: o que validar e onde validar

Segurança 25 de março de 2023 csrf, http, api, validation

Erros e exceções no PHP 8+: estratégia consistente de tratamento

PHP 4 de março de 2023 logging, debug, php, profiling

PDO com prepared statements: evitando SQL injection na prática

PHP 13 de fevereiro de 2023 pdo, sql, mysql, debug

Composer e autoload (PSR-4): estrutura mínima que escala

PHP 20 de janeiro de 2023 composer, psr, cli, autoload