2. Configuração do Ambiente PHP Profissional
Antes de escrever código, precisamos de um ambiente configurado corretamente. Isso inclui PHP 8.2+, Composer (gerenciador de dependências), extensões necessárias e uma estrutura de pastas organizada.
checklist Requisitos do Sistema
🐘 PHP 8.2 ou Superior
Recursos modernos como tipos união, readonly properties e performance melhorada.
# Verificar versão instalada php -v # Deve mostrar: PHP 8.2.x ou superior
📦 Composer 2.x
Gerenciador de dependências para instalar bibliotecas como JWT, validação, etc.
# Verificar instalação composer --version # Instalar (se necessário) # https://getcomposer.org
extension Extensões PHP Necessárias
pdo_mysql
Conexão com MySQL/MariaDB usando PDO (Prepared Statements).
mbstring
Suporte a caracteres UTF-8 e strings multibyte (acentos, emojis).
openssl
Criptografia para HTTPS, JWT, password hashing e tokens seguros.
curl
Requisições HTTP para APIs externas (Stripe, PIX gateways).
json
Codificação/decodificação JSON (comunicação com React).
intl
Formatação de datas, moedas e validação de locales.
# Verificar extensões instaladas php -m # Se faltar alguma, instalar (Ubuntu/Debian): sudo apt-get install php8.2-mysql php8.2-mbstring php8.2-curl php8.2-xml php8.2-intl # Reiniciar servidor web sudo systemctl restart apache2 # ou nginx
folder Estrutura de Pastas Profissional
backend/ │ ├── public/ ← Ponto de entrada público │ ├── index.php ← Router principal │ └── .htaccess ← Reescritas de URL (Apache) │ ├── src/ ← Código fonte │ ├── config/ │ │ ├── database.php ← Conexão PDO │ │ └── env.php ← Carrega variáveis .env │ │ │ ├── controllers/ │ │ ├── AuthController.php │ │ ├── UserController.php │ │ └── PaymentController.php │ │ │ ├── models/ │ │ ├── User.php │ │ └── Payment.php │ │ │ ├── middleware/ │ │ ├── AuthMiddleware.php ← Verifica JWT │ │ ├── CORSMiddleware.php ← Headers CORS │ │ └── RateLimitMiddleware.php │ │ │ ├── services/ │ │ ├── JWTService.php │ │ ├── PasswordService.php │ │ └── PaymentService.php │ │ │ └── utils/ │ ├── Validator.php │ └── Response.php │ ├── vendor/ ← Dependências (Composer) ├── .env ← Variáveis de ambiente (NÃO COMITAR!) ├── .env.example ← Template do .env ├── composer.json ← Dependências └── README.md
build Instalando Dependências com Composer
# composer.json
{
"name": "seu-projeto/backend-api",
"description": "Backend PHP com autenticação e pagamentos",
"require": {
"php": ">=8.2",
"firebase/php-jwt": "^6.8",
"vlucas/phpdotenv": "^5.5",
"rakit/validation": "^1.4",
"guzzlehttp/guzzle": "^7.8"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
# Instalar todas as dependências composer install # Isso cria a pasta vendor/ com: # - firebase/php-jwt: Geração e validação de tokens JWT # - phpdotenv: Carrega variáveis de .env # - rakit/validation: Validação de dados robusta # - guzzle: Cliente HTTP para APIs externas
settings Arquivo .env (Variáveis Sensíveis)
.gitignore.
Exponha apenas .env.example como template.
# .env # Database DB_HOST=localhost DB_PORT=3306 DB_NAME=seu_banco DB_USER=seu_usuario DB_PASS=senha_super_segura_aqui # JWT JWT_SECRET=chave_aleatoria_256_bits_nunca_exponha JWT_EXPIRY=3600 # 1 hora em segundos # API API_URL=https://api.seusite.com FRONTEND_URL=https://seusite.com # Payment Gateways STRIPE_SECRET_KEY=sk_test_... PAGARME_API_KEY=... # Environment APP_ENV=production # development | production APP_DEBUG=false