Skip to content

Commit 49396b7

Browse files
feat: atualizar README e script de validação para refletir a versão 1.1.2 do PivotPHP
1 parent 4338aed commit 49396b7

3 files changed

Lines changed: 253 additions & 28 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
**PivotPHP** é um microframework moderno, leve e seguro, inspirado no Express.js, para construir APIs e aplicações web de alta performance em PHP. Ideal para validação de conceitos, estudos e desenvolvimento de aplicações que exigem produtividade, arquitetura desacoplada e extensibilidade real.
1717

18-
- **Alta Performance**: 692K ops/sec em Status Codes, 548K ops/sec em Content Negotiation, 317K ops/sec em Request Parsing, 294K ops/sec em Response Creation (Docker v1.1.1).
18+
- **Alta Performance**: 1.32M+ ops/sec total throughput, 837K ops/sec JSON processing, 505K ops/sec small JSON, apenas 1.61MB memory footprint (v1.1.1 Revolutionary JSON Edition).
1919
- **Arquitetura Moderna**: DI Container, Service Providers, Event System, Extension System e PSR-15.
2020
- **Segurança**: Middlewares robustos para CSRF, XSS, Rate Limiting, JWT, API Key e mais.
2121
- **Extensível**: Sistema de plugins, hooks, providers e integração PSR-14.
@@ -210,7 +210,7 @@ $app->get('/api/users', function($req, $res) {
210210
$users = User::all(); // 1000+ usuários
211211

212212
// Automaticamente usa pooling para datasets grandes
213-
return $res->json($users); // 161K ops/sec (pequenos), 17K ops/sec (médios), 1.7K ops/sec (grandes)
213+
return $res->json($users); // 505K ops/sec (pequenos), 119K ops/sec (médios), 214K ops/sec (grandes)
214214
});
215215

216216
// Controle manual para casos específicos
@@ -240,7 +240,7 @@ echo "Operations: {$stats['total_operations']}";
240240
**Características da Otimização JSON:**
241241
-**Detecção automática** - ativa pooling para arrays 10+ elementos, objetos 5+ propriedades
242242
-**Fallback inteligente** - dados pequenos usam `json_encode()` tradicional
243-
-**161K ops/sec** (pequenos), **17K ops/sec** (médios), **1.7K ops/sec** (grandes) em testes Docker
243+
-**505K ops/sec** (pequenos), **119K ops/sec** (médios), **214K ops/sec** (grandes) em testes validados
244244
-**100% reuso** de buffers em cenários de alta frequência
245245
-**Zero configuração** - funciona automaticamente com código existente
246246
-**Monitoramento integrado** - estatísticas detalhadas para otimização
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
# PivotPHP Core v1.1.2 - Framework Overview
2+
3+
**Versão:** 1.1.2 (Consolidation Edition)
4+
**Data de Release:** 2025-07-11
5+
**Status:** Stable Release
6+
7+
## 📋 Visão Geral
8+
9+
PivotPHP Core v1.1.2 é uma versão de **consolidação técnica** que elimina duplicações críticas de código, reorganiza a estrutura de arquivos e otimiza a arquitetura do framework. Esta versão prepara o framework para uso em produção através de melhorias significativas na organização e manutenibilidade do código.
10+
11+
## 🎯 Objetivos da Versão
12+
13+
- **Eliminação de duplicações:** Remoção de 100% das duplicações críticas identificadas
14+
- **Reorganização arquitetural:** Estrutura de middlewares organizada por responsabilidade
15+
- **Manutenção de compatibilidade:** 100% backward compatibility através de aliases
16+
- **Modernização de CI/CD:** Atualização para GitHub Actions v4
17+
- **Melhoria de qualidade:** PHPStan Level 9, PSR-12, cobertura de testes
18+
19+
## 📊 Métricas da Versão
20+
21+
### Performance Benchmarks
22+
- **Request Creation:** 28,693 ops/sec
23+
- **Response Creation:** 131,351 ops/sec
24+
- **PSR-7 Compatibility:** 13,376 ops/sec
25+
- **Hybrid Operations:** 13,579 ops/sec
26+
- **Object Pooling:** 24,161 ops/sec
27+
- **Route Processing:** 31,699 ops/sec
28+
- **Performance Média:** 40,476 ops/sec
29+
30+
### Qualidade de Código
31+
- **PHPStan:** Level 9, 0 erros (119 arquivos)
32+
- **PSR-12:** 100% compliance, 0 erros
33+
- **Testes:** 429/430 passando (99.8% success rate)
34+
- **Coverage:** 33.23% (3,261/9,812 statements)
35+
- **Arquivos PHP:** 119 arquivos (-3 vs v1.1.1)
36+
- **Linhas de Código:** 29,556 linhas (-1,071 vs v1.1.1)
37+
38+
### Redução Técnica
39+
- **Duplicações Eliminadas:** 5 → 0 (100% redução)
40+
- **Namespaces Organizados:** 3 fragmentados → 1 unificado
41+
- **Aliases de Compatibilidade:** 12 aliases criados
42+
- **Arquivos Consolidados:** 3 arquivos removidos
43+
44+
## 🏗️ Arquitetura Consolidada
45+
46+
### Nova Estrutura de Middlewares
47+
```
48+
src/Middleware/
49+
├── Http/
50+
│ ├── CorsMiddleware.php
51+
│ └── ErrorMiddleware.php
52+
├── Security/
53+
│ ├── AuthMiddleware.php
54+
│ ├── CsrfMiddleware.php
55+
│ ├── SecurityHeadersMiddleware.php
56+
│ └── XssMiddleware.php
57+
└── Performance/
58+
├── CacheMiddleware.php
59+
└── RateLimitMiddleware.php
60+
```
61+
62+
### Componentes Consolidados
63+
- **DynamicPoolManager:** `src/Http/Pool/DynamicPoolManager.php`
64+
- **PerformanceMonitor:** `src/Performance/PerformanceMonitor.php`
65+
- **Arr Utilities:** `src/Utils/Arr.php` (Support/Arr removido)
66+
67+
### Aliases de Compatibilidade
68+
```php
69+
// Middlewares HTTP
70+
PivotPHP\Core\Http\Psr15\Middleware\CorsMiddleware
71+
→ PivotPHP\Core\Middleware\Http\CorsMiddleware
72+
73+
// Middlewares de Segurança
74+
PivotPHP\Core\Http\Psr15\Middleware\CsrfMiddleware
75+
→ PivotPHP\Core\Middleware\Security\CsrfMiddleware
76+
77+
// Performance e Pool
78+
PivotPHP\Core\Monitoring\PerformanceMonitor
79+
→ PivotPHP\Core\Performance\PerformanceMonitor
80+
81+
// Utilitários
82+
PivotPHP\Core\Support\Arr
83+
→ PivotPHP\Core\Utils\Arr
84+
```
85+
86+
## 🔧 Melhorias Técnicas
87+
88+
### GitHub Actions Modernizado
89+
- **actions/upload-artifact:** v3 → v4
90+
- **actions/cache:** v3 → v4
91+
- **codecov/codecov-action:** v3 → v4
92+
- **Coverage calculation:** Parser XML funcional
93+
- **Error handling:** Graceful fallbacks
94+
95+
### Correções de Código
96+
- **DynamicPoolManager:** Constructor com configuração
97+
- **Arr::flatten:** Implementação depth-aware com dot notation
98+
- **PSR-12 compliance:** Separação de functions.php e aliases.php
99+
- **Type safety:** Strict typing em todos os componentes
100+
101+
### Validação Automática
102+
- **Quality Gates:** 8 critérios críticos implementados
103+
- **Pre-commit hooks:** Validação automática
104+
- **CI/CD pipeline:** Integração contínua funcional
105+
- **Coverage reporting:** Métricas precisas
106+
107+
## 💾 Configuração e Uso
108+
109+
### Autoload Atualizado
110+
```json
111+
{
112+
"autoload": {
113+
"psr-4": {
114+
"PivotPHP\\Core\\": "src/"
115+
},
116+
"files": [
117+
"src/functions.php",
118+
"src/aliases.php"
119+
]
120+
}
121+
}
122+
```
123+
124+
### Migração Simples
125+
```php
126+
// Código v1.1.1 (continua funcionando)
127+
use PivotPHP\Core\Http\Psr15\Middleware\CorsMiddleware;
128+
129+
// Código v1.1.2 (recomendado)
130+
use PivotPHP\Core\Middleware\Http\CorsMiddleware;
131+
```
132+
133+
## 🔄 Compatibilidade
134+
135+
### Backward Compatibility
136+
- **100% compatível** com código v1.1.1
137+
- **Aliases automáticos** para todas as classes movidas
138+
- **APIs públicas** inalteradas
139+
- **Comportamento** idêntico
140+
141+
### Depreciação Planejada
142+
- **Aliases temporários** serão removidos na v1.2.0
143+
- **Migração automática** disponível via script
144+
- **Documentação** de migração incluída
145+
146+
## 🚀 Recursos Mantidos
147+
148+
### Core Features
149+
- **Express.js-inspired API:** Request/Response híbrido
150+
- **PSR Standards:** PSR-7, PSR-15, PSR-12 compliance
151+
- **Object Pooling:** High-performance object reuse
152+
- **JSON Optimization:** v1.1.1 buffer pooling mantido
153+
- **Middleware Pipeline:** PSR-15 compliant
154+
- **Security Features:** CSRF, XSS, CORS, Rate Limiting
155+
156+
### Development Tools
157+
- **OpenAPI/Swagger:** Documentação automática
158+
- **Benchmarking:** Suite de performance
159+
- **Quality Gates:** Validação automática
160+
- **Testing:** 430+ testes unitários e integração
161+
162+
## 📈 Roadmap
163+
164+
### v1.2.0 (Próxima Major)
165+
- [ ] Remoção de aliases temporários
166+
- [ ] Novos middlewares de segurança
167+
- [ ] Performance improvements
168+
- [ ] Expanded documentation
169+
170+
### Ecosystem Integration
171+
- [ ] PivotPHP Cycle ORM v1.1.0
172+
- [ ] PivotPHP ReactPHP v0.2.0
173+
- [ ] Enhanced benchmarking suite
174+
175+
## 🎯 Conclusão
176+
177+
PivotPHP Core v1.1.2 representa um marco importante na evolução do framework, estabelecendo uma base sólida para crescimento futuro através de:
178+
179+
- **Arquitetura limpa** e organizada
180+
- **Qualidade de código** excepcional
181+
- **Performance** mantida e otimizada
182+
- **Compatibilidade** total preservada
183+
- **DevOps** modernizado
184+
185+
Esta versão está **pronta para produção** e serve como fundação robusta para o ecossistema PivotPHP.
186+
187+
---
188+
189+
**Documentação Completa:** [docs/](../README.md)
190+
**Migration Guide:** [MIGRATION_GUIDE_v1.1.2.md](MIGRATION_GUIDE_v1.1.2.md)
191+
**Changelog:** [CHANGELOG_v1.1.2.md](CHANGELOG_v1.1.2.md)

scripts/validate_project.php

Lines changed: 59 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ProjectValidator
1616

1717
public function validate()
1818
{
19-
echo "🔍 Validando projeto PivotPHP v1.0.0...\n\n";
19+
echo "🔍 Validando projeto PivotPHP v1.1.2...\n\n";
2020

2121
// Testes estruturais
2222
$this->validateStructure();
@@ -45,7 +45,6 @@ private function validateStructure()
4545
'src/',
4646
'src/Middleware/',
4747
'src/Authentication/',
48-
'examples/',
4948
'tests/',
5049
'docs/',
5150
'docs/releases/',
@@ -67,13 +66,13 @@ private function validateStructure()
6766
}
6867

6968
$requiredFiles = [
70-
'src/Http/Psr15/Middleware/SecurityHeadersMiddleware.php',
69+
'src/Middleware/Security/SecurityHeadersMiddleware.php',
7170
'src/Authentication/JWTHelper.php',
7271
'composer.json',
7372
'README.md',
7473
'docs/index.md',
7574
'docs/releases/README.md',
76-
'docs/releases/FRAMEWORK_OVERVIEW_v1.0.0.md',
75+
'docs/releases/FRAMEWORK_OVERVIEW_v1.1.2.md',
7776
'docs/implementations/usage_basic.md',
7877
'docs/technical/application.md',
7978
'docs/technical/http/request.md',
@@ -149,18 +148,48 @@ private function validateMiddlewares()
149148
{
150149
echo "🛡️ Validando middlewares...\n";
151150

152-
// Verificar SecurityHeadersMiddleware (PSR-15)
153-
if (class_exists('PivotPHP\\Core\\Http\\Psr15\\Middleware\\SecurityHeadersMiddleware')) {
154-
$this->passed[] = "SecurityHeadersMiddleware carregado";
151+
// Verificar SecurityHeadersMiddleware (nova estrutura v1.1.2)
152+
if (class_exists('PivotPHP\\Core\\Middleware\\Security\\SecurityHeadersMiddleware')) {
153+
$this->passed[] = "SecurityHeadersMiddleware carregado (v1.1.2)";
155154

156155
try {
157-
$security = new \PivotPHP\Core\Http\Psr15\Middleware\SecurityHeadersMiddleware();
156+
$security = new \PivotPHP\Core\Middleware\Security\SecurityHeadersMiddleware();
158157
$this->passed[] = "SecurityHeadersMiddleware pode ser instanciado";
159158
} catch (Exception $e) {
160159
$this->errors[] = "Erro ao instanciar SecurityHeadersMiddleware: " . $e->getMessage();
161160
}
162161
} else {
163-
$this->warnings[] = "SecurityHeadersMiddleware não encontrado";
162+
// Verificar se ainda existe via alias de compatibilidade
163+
if (class_exists('PivotPHP\\Core\\Http\\Psr15\\Middleware\\SecurityHeadersMiddleware')) {
164+
$this->passed[] = "SecurityHeadersMiddleware carregado via alias (compatibilidade)";
165+
} else {
166+
$this->errors[] = "SecurityHeadersMiddleware não encontrado";
167+
}
168+
}
169+
170+
// Verificar outros middlewares de segurança (v1.1.2)
171+
$securityMiddlewares = [
172+
'CsrfMiddleware' => 'PivotPHP\\Core\\Middleware\\Security\\CsrfMiddleware',
173+
'XssMiddleware' => 'PivotPHP\\Core\\Middleware\\Security\\XssMiddleware',
174+
'AuthMiddleware' => 'PivotPHP\\Core\\Middleware\\Security\\AuthMiddleware',
175+
'CorsMiddleware' => 'PivotPHP\\Core\\Middleware\\Http\\CorsMiddleware',
176+
'RateLimitMiddleware' => 'PivotPHP\\Core\\Middleware\\Performance\\RateLimitMiddleware',
177+
];
178+
179+
$securityCount = 0;
180+
foreach ($securityMiddlewares as $name => $class) {
181+
if (class_exists($class)) {
182+
$this->passed[] = "{$name} carregado (v1.1.2)";
183+
$securityCount++;
184+
} else {
185+
$this->warnings[] = "{$name} não encontrado";
186+
}
187+
}
188+
189+
if ($securityCount >= 4) {
190+
$this->passed[] = "Middlewares de segurança suficientes encontrados ({$securityCount}/5)";
191+
} else {
192+
$this->warnings[] = "Poucos middlewares de segurança encontrados ({$securityCount}/5)";
164193
}
165194

166195
// Verificar JWTHelper
@@ -237,7 +266,7 @@ private function validateTests()
237266

238267
private function validateDocumentation()
239268
{
240-
echo "📚 Validando documentação v1.0.0...\n";
269+
echo "📚 Validando documentação v1.1.2...\n";
241270

242271
// Documentação principal
243272
$mainDocs = [
@@ -380,12 +409,12 @@ private function validateSecurity()
380409
$this->warnings[] = "Arquivo .env.example não encontrado - recomendado para projetos";
381410
}
382411

383-
// Verificar configurações de segurança no código
384-
$securityFiles = glob('src/Middlewares/Security/*.php');
385-
if (count($securityFiles) >= 2) {
386-
$this->passed[] = "Múltiplos middlewares de segurança implementados";
412+
// Verificar configurações de segurança no código (v1.1.2)
413+
$securityFiles = glob('src/Middleware/Security/*.php');
414+
if (count($securityFiles) >= 3) {
415+
$this->passed[] = "Múltiplos middlewares de segurança implementados (" . count($securityFiles) . " arquivos)";
387416
} else {
388-
$this->warnings[] = "Poucos middlewares de segurança encontrados";
417+
$this->warnings[] = "Poucos middlewares de segurança encontrados (" . count($securityFiles) . " arquivos)";
389418
}
390419

391420
echo "✅ Segurança validada\n\n";
@@ -476,18 +505,23 @@ private function validateReleases()
476505
}
477506
}
478507

479-
// Verificar se v1.0.0 tem conteúdo específico
480-
if (file_exists('docs/releases/FRAMEWORK_OVERVIEW_v1.0.0.md')) {
481-
$content = file_get_contents('docs/releases/FRAMEWORK_OVERVIEW_v1.0.0.md');
508+
// Verificar se v1.1.2 tem conteúdo específico
509+
if (file_exists('docs/releases/FRAMEWORK_OVERVIEW_v1.1.2.md')) {
510+
$content = file_get_contents('docs/releases/FRAMEWORK_OVERVIEW_v1.1.2.md');
482511

483-
if (strpos($content, '2.69M ops/sec') !== false &&
484-
strpos($content, 'PHP 8.4.8') !== false &&
485-
strpos($content, 'JIT') !== false) {
486-
$this->passed[] = "FRAMEWORK_OVERVIEW_v1.0.0.md contém métricas de performance esperadas";
512+
if (strpos($content, '40,476 ops/sec') !== false &&
513+
strpos($content, 'v1.1.2') !== false &&
514+
strpos($content, 'Consolidation Edition') !== false) {
515+
$this->passed[] = "FRAMEWORK_OVERVIEW_v1.1.2.md contém métricas de performance esperadas";
487516
} else {
488-
$this->warnings[] = "FRAMEWORK_OVERVIEW_v1.0.0.md pode estar incompleto (faltam métricas v1.0.0)";
517+
$this->warnings[] = "FRAMEWORK_OVERVIEW_v1.1.2.md pode estar incompleto (faltam métricas v1.1.2)";
489518
}
490519
}
520+
521+
// Verificar se ainda existe v1.0.0 (para compatibilidade)
522+
if (file_exists('docs/releases/FRAMEWORK_OVERVIEW_v1.0.0.md')) {
523+
$this->passed[] = "FRAMEWORK_OVERVIEW_v1.0.0.md mantido para compatibilidade";
524+
}
491525

492526
} else {
493527
$this->errors[] = "Diretório docs/releases/ não encontrado";
@@ -612,7 +646,7 @@ private function generateReport()
612646

613647
// Status final
614648
if (empty($this->errors)) {
615-
echo "🎉 PROJETO EXPRESS PHP v1.0.0 VALIDADO COM SUCESSO!\n";
649+
echo "🎉 PROJETO PIVOTPHP CORE v1.1.2 VALIDADO COM SUCESSO!\n";
616650
echo " O projeto está pronto para uso e publicação.\n";
617651

618652
if (!empty($this->warnings)) {
@@ -625,7 +659,7 @@ private function generateReport()
625659
echo " 3. Valide a documentação: ./scripts/validate-docs.sh\n";
626660
echo " 4. Valide os benchmarks: ./scripts/validate_benchmarks.sh\n";
627661
echo " 5. Faça commit das alterações\n";
628-
echo " 6. Crie uma tag de versão: git tag -a v1.0.0 -m 'Release v1.0.0'\n";
662+
echo " 6. Crie uma tag de versão: git tag -a v1.1.2 -m 'Release v1.1.2'\n";
629663
echo " 7. Push para o repositório: git push origin main --tags\n";
630664
echo " 8. Publique no Packagist: https://packagist.org\n";
631665
echo " 9. Repositório: https://github.com/CAFernandes/pivotphp-core\n";

0 commit comments

Comments
 (0)