Skip to content

Commit 8e4a40b

Browse files
authored
Merge pull request #15 from PivotPHP/feature/v2.0.0-modular-routing
Feature/v2.0.0 modular routing
2 parents 3e7340b + 6328e03 commit 8e4a40b

File tree

88 files changed

+3434
-17667
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+3434
-17667
lines changed

CHANGELOG.md

Lines changed: 149 additions & 23 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
- **🛡️ Segurança Integrada**: Middlewares prontos para CSRF, XSS, JWT - protótipos seguros desde o início.
2222
- **🔧 Extensibilidade Simples**: Sistema de plugins e providers para expandir funcionalidades conforme necessário.
2323
- **📊 Performance Adequada**: Throughput de 44,092 ops/sec, footprint de 1.61MB - suficiente para demonstrações.
24-
- **🎨 v1.2.0**: Simplicity Edition - Arquitetura limpa, zero complexidade desnecessária, foco em simplicidade.
24+
- **🎨 v2.0.0**: Legacy Cleanup Edition - 18% code reduction, modern namespaces, routing externalized, zero deprecated code.
2525

2626
---
2727

@@ -34,15 +34,17 @@
3434
- 🔐 **Autenticação Multi-método**
3535
- 🛡️ **Segurança Avançada**
3636
- 📡 **Streaming & SSE**
37-
- 📚 **OpenAPI/Swagger Automático** (v1.2.0+ Middleware)
37+
- 📚 **OpenAPI/Swagger Automático** (v2.0.0 Middleware)
3838
- 🔄 **PSR-7 Híbrido**
3939
- ♻️ **Object Pooling**
40-
- 🚀 **JSON Optimization** (v1.2.0 Intelligent)
41-
- 🎯 **Array Callables** (v1.2.0 Native)
42-
- 🔍 **Enhanced Error Diagnostics** (v1.2.0)
40+
- 🚀 **JSON Optimization** (Intelligent Caching)
41+
- 🎯 **Array Callables** (Native Support)
42+
- 🔍 **Enhanced Error Diagnostics**
4343
-**Performance Extrema**
4444
- 🧪 **Qualidade e Testes**
45-
- 🎯 **Simplicidade sobre Otimização** (v1.2.0)
45+
- 🎯 **Simplicidade sobre Otimização**
46+
- 🧹 **v2.0.0 Legacy Cleanup** (18% code reduction)
47+
- 🔌 **Modular Routing** (External package, pluggable in v2.1.0)
4648

4749
---
4850

@@ -116,7 +118,7 @@ $app->get('/posts/:year<\d{4}>/:month<\d{2}>/:slug<slug>', function($req, $res)
116118
$app->run();
117119
```
118120

119-
### 🛣️ Sintaxes de Roteamento Suportadas (v1.2.0)
121+
### 🛣️ Sintaxes de Roteamento Suportadas
120122

121123
O PivotPHP oferece suporte robusto para múltiplas sintaxes de roteamento:
122124

@@ -160,37 +162,37 @@ $app->get('/users/:id', [Controller::class, 'show']);
160162

161163
namespace App\Controllers;
162164

163-
class UserController
165+
class UserController
164166
{
165167
// ✅ Métodos devem ser PÚBLICOS
166-
public function index($req, $res)
168+
public function index($req, $res)
167169
{
168170
$users = User::paginate($req->query('limit', 10));
169171
return $res->json(['users' => $users]);
170172
}
171-
172-
public function show($req, $res)
173+
174+
public function show($req, $res)
173175
{
174176
$id = $req->param('id');
175177
$user = User::find($id);
176-
178+
177179
if (!$user) {
178180
return $res->status(404)->json(['error' => 'User not found']);
179181
}
180-
182+
181183
return $res->json(['user' => $user]);
182184
}
183-
184-
public function store($req, $res)
185+
186+
public function store($req, $res)
185187
{
186188
$data = $req->body();
187189
$user = User::create($data);
188-
190+
189191
return $res->status(201)->json(['user' => $user]);
190192
}
191193
}
192194

193-
// ✅ Registrar rotas com array callable v1.2.0
195+
// ✅ Registrar rotas com array callable
194196
$app->get('/users', [UserController::class, 'index']);
195197
$app->get('/users/:id<\d+>', [UserController::class, 'show']); // Apenas números
196198
$app->post('/users', [UserController::class, 'store']);
@@ -200,10 +202,10 @@ $app->put('/users/:id', [UserController::class, 'update'])
200202
->middleware($authMiddleware);
201203
```
202204

203-
#### ⚡ Validação Automática (v1.2.0)
205+
#### ⚡ Validação Automática
204206

205207
```php
206-
// O PivotPHP v1.2.0 valida automaticamente array callables:
208+
// O PivotPHP valida automaticamente array callables:
207209

208210
// ✅ Método público - ACEITO
209211
class PublicController {
@@ -265,17 +267,17 @@ $response = OptimizedHttpFactory::createResponse();
265267
-**API Express.js** mantida para produtividade
266268
-**Zero breaking changes** - código existente funciona sem alterações
267269

268-
### 🚀 JSON Optimization (v1.2.0 Intelligent System)
270+
### 🚀 JSON Optimization (Intelligent System)
269271

270-
O PivotPHP v1.2.0 mantém o **threshold inteligente de 256 bytes** no sistema de otimização JSON, eliminando overhead para dados pequenos:
272+
O PivotPHP mantém o **threshold inteligente de 256 bytes** no sistema de otimização JSON, eliminando overhead para dados pequenos:
271273

272274
#### ⚡ Sistema Inteligente Automático
273275

274276
```php
275277
// ✅ OTIMIZAÇÃO AUTOMÁTICA - Zero configuração necessária
276278
$app->get('/api/users', function($req, $res) {
277279
$users = User::all();
278-
280+
279281
// Sistema decide automaticamente:
280282
// • Poucos usuários (<256 bytes): json_encode() direto
281283
// Muitos usuários (≥256 bytes): pooling automático
@@ -288,10 +290,10 @@ $app->get('/api/users', function($req, $res) {
288290
```php
289291
// Dados pequenos (<256 bytes) - json_encode() direto
290292
$smallData = ['status' => 'ok', 'count' => 42];
291-
$json = JsonBufferPool::encodeWithPool($smallData);
293+
$json = JsonBufferPool::encodeWithPool($smallData);
292294
// Performance: 500K+ ops/sec (sem overhead)
293295

294-
// Dados médios (256 bytes - 10KB) - pooling automático
296+
// Dados médios (256 bytes - 10KB) - pooling automático
295297
$mediumData = User::paginate(20);
296298
$json = JsonBufferPool::encodeWithPool($mediumData);
297299
// Performance: 119K+ ops/sec (15-30% ganho)
@@ -327,7 +329,7 @@ echo "Eficiência: {$stats['efficiency']}%\n";
327329
echo "Operações: {$stats['total_operations']}\n";
328330
```
329331

330-
#### ✨ Mantido v1.2.0
332+
#### ✨ Mantido v2.0.0
331333

332334
-**Threshold Inteligente** - Elimina overhead para dados <256 bytes
333335
-**Detecção Automática** - Sistema decide quando usar pooling
@@ -336,7 +338,7 @@ echo "Operações: {$stats['total_operations']}\n";
336338
-**Monitoramento Integrado** - Estatísticas em tempo real
337339
-**Compatibilidade Total** - Drop-in replacement transparente
338340

339-
### 🔍 Enhanced Error Diagnostics (v1.2.0)
341+
### 🔍 Enhanced Error Diagnostics
340342

341343
PivotPHP v1.2.0 mantém **ContextualException** para diagnósticos avançados de erros:
342344

@@ -367,7 +369,7 @@ try {
367369
```php
368370
// Automaticamente detectadas pelo sistema
369371
ContextualException::CATEGORY_ROUTING // Problemas de roteamento
370-
ContextualException::CATEGORY_PARAMETER // Validação de parâmetros
372+
ContextualException::CATEGORY_PARAMETER // Validação de parâmetros
371373
ContextualException::CATEGORY_VALIDATION // Validação de dados
372374
ContextualException::CATEGORY_MIDDLEWARE // Problemas de middleware
373375
ContextualException::CATEGORY_HTTP // Erros HTTP
@@ -402,9 +404,9 @@ ContextualException::configure([
402404
-**Segurança por Ambiente** - Detalhes reduzidos em produção
403405
-**Logging Integrado** - Registro automático para análise posterior
404406

405-
📖 **Documentação completa:**
407+
📖 **Documentação completa:**
406408
- [Array Callable Guide](docs/technical/routing/ARRAY_CALLABLE_GUIDE.md)
407-
- [JsonBufferPool Optimization Guide](docs/technical/json/BUFFER_POOL_OPTIMIZATION.md)
409+
- [JsonBufferPool Optimization Guide](docs/technical/json/BUFFER_POOL_OPTIMIZATION.md)
408410
- [Enhanced Error Diagnostics](docs/technical/error-handling/CONTEXTUAL_EXCEPTION_GUIDE.md)
409411

410412
### 📖 Documentação OpenAPI/Swagger Automática (v1.2.0+)
@@ -735,9 +737,7 @@ Se você precisa de um framework com equipe dedicada e suporte empresarial, cons
735737

736738
Junte-se à nossa comunidade crescente de desenvolvedores:
737739

738-
- **Discord**: [Entre no nosso servidor](https://discord.gg/DMtxsP7z) - Obtenha ajuda, compartilhe ideias e conecte-se com outros desenvolvedores
739740
- **GitHub Discussions**: [Inicie uma discussão](https://github.com/PivotPHP/pivotphp-core/discussions) - Compartilhe feedback e ideias
740-
- **Twitter**: [@PivotPHP](https://twitter.com/pivotphp) - Siga para atualizações e anúncios
741741

742742
## 🤝 Como Contribuir
743743

RELEASE_v1.2.0.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# 🚀 PivotPHP Core v1.2.0 - Simplicity Edition
22
## "Simplicidade sobre Otimização Prematura"
33

4-
**Data de Lançamento**: 21 de Julho de 2025
5-
**Versão**: 1.2.0 (Simplicity Edition)
6-
**Compatibilidade**: PHP 8.1+ | 100% Backward Compatible
4+
**Data de Lançamento**: 21 de Julho de 2025
5+
**Versão**: 1.2.0 (Simplicity Edition)
6+
**Compatibilidade**: PHP 8.1+ | 100% Backward Compatible
77
**Status**: Estável para uso em produção
88

99
---
@@ -35,7 +35,7 @@ use PivotPHP\Core\Middleware\Http\ApiDocumentationMiddleware;
3535
// Ativar documentação automática em 3 linhas
3636
$app->use(new ApiDocumentationMiddleware([
3737
'docs_path' => '/docs', // JSON OpenAPI 3.0.0
38-
'swagger_path' => '/swagger', // Interface Swagger UI
38+
'swagger_path' => '/swagger', // Interface Swagger UI
3939
'base_url' => 'http://localhost:8080'
4040
]));
4141

@@ -292,13 +292,12 @@ A versão 1.2.0 "Simplicity Edition" marca um momento de maturidade do PivotPHP
292292
## 📞 **Suporte e Comunidade**
293293

294294
- **📚 Documentação**: [GitHub Wiki](https://github.com/PivotPHP/pivotphp-core/wiki)
295-
- **💬 Discord**: [Comunidade PivotPHP](https://discord.gg/DMtxsP7z)
296295
- **🐛 Issues**: [GitHub Issues](https://github.com/PivotPHP/pivotphp-core/issues)
297296
- **📖 Examples**: [Diretório examples/](examples/) com 11 exemplos práticos
298297
- **🎓 Tutoriais**: [docs/](docs/) com guias detalhados
299298

300299
---
301300

302-
**PivotPHP v1.2.0 - Onde simplicidade encontra performance. Onde produtividade encontra qualidade. Onde desenvolvedores encontram felicidade.**
301+
**PivotPHP v1.2.0 - Onde simplicidade encontra performance. Onde produtividade encontra qualidade. Onde desenvolvedores encontram felicidade.**
303302

304-
🚀 **Happy Coding!**
303+
🚀 **Happy Coding!**

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.0
1+
2.0.0

composer.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pivotphp/core",
3-
"description": "PivotPHP Core v1.2.0 - Simplified high-performance microframework with automatic OpenAPI/Swagger documentation, PSR-7 hybrid support, and Express.js-inspired API",
3+
"description": "PivotPHP Core v2.0.0 - Modular high-performance microframework with pluggable routing system, automatic OpenAPI/Swagger documentation, PSR-7 hybrid support, and Express.js-inspired API",
44
"type": "library",
55
"keywords": [
66
"php",
@@ -43,11 +43,14 @@
4343
"psr/container": "^2.0",
4444
"psr/event-dispatcher": "^1.0",
4545
"psr/http-factory": "^1.0",
46-
"psr/http-message": "^1.1",
46+
"psr/http-message": "^1.1|^2.0",
4747
"psr/http-server-handler": "^1.0",
4848
"psr/http-server-middleware": "^1.0",
4949
"psr/log": "^3.0",
50-
"react/http": "^1.9"
50+
"psr/cache": "^2.0|^3.0",
51+
"psr/simple-cache": "^2.0|^3.0",
52+
"react/http": "^1.9",
53+
"pivotphp/core-routing": "^1.0"
5154
},
5255
"require-dev": {
5356
"phpunit/phpunit": "^9.0|^10.0",
@@ -62,7 +65,9 @@
6265
"ext-openssl": "Required for secure token generation",
6366
"ext-mbstring": "Required for proper string handling",
6467
"ext-fileinfo": "Required for file upload validation",
65-
"ext-apcu": "For caching middleware and performance optimization"
68+
"ext-apcu": "For caching middleware and performance optimization",
69+
"pivotphp/cycle-orm": "Database ORM integration for PivotPHP",
70+
"pivotphp/reactphp": "Async runtime extension for continuous execution"
6671
},
6772
"autoload": {
6873
"psr-4": {

docs/API_REFERENCE.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# PivotPHP Core - API Reference
22

3-
**Version:** 1.2.0
4-
**Last Updated:** July 2025
3+
**Version:** 1.2.0
4+
**Last Updated:** July 2025
55

66
> ⚠️ **Nota**: Este projeto é mantido por apenas uma pessoa e pode não receber atualizações constantemente. Ideal para provas de conceito, protótipos e estudos, mas não recomendado para aplicações críticas de produção.
77
@@ -118,7 +118,7 @@ $app->get('/protected', $authMiddleware, function ($req, $res) {
118118

119119
#### Multiple Middleware
120120
```php
121-
$app->post('/api/data',
121+
$app->post('/api/data',
122122
$corsMiddleware,
123123
$authMiddleware,
124124
$validationMiddleware,
@@ -273,7 +273,7 @@ $app->get('/users', 'getUsersHandler');
273273
#### String Format (Does NOT work)
274274
```php
275275
// This will cause a TypeError!
276-
$app->get('/users', 'UserController@index');
276+
$app->get('/users', 'UserController@index');
277277
```
278278

279279
**Use this instead:**
@@ -299,7 +299,7 @@ PerformanceMode::disable();
299299

300300
**Performance Profiles:**
301301
- `PROFILE_DEVELOPMENT` - Development optimization
302-
- `PROFILE_PRODUCTION` - Production optimization
302+
- `PROFILE_PRODUCTION` - Production optimization
303303
- `PROFILE_TEST` - Test optimization
304304

305305
### JSON Optimization (v1.1.1+)
@@ -321,7 +321,7 @@ $stats = JsonBufferPool::getStatistics();
321321

322322
**Automatic Optimization:**
323323
- Arrays with 10+ elements use pooling
324-
- Objects with 5+ properties use pooling
324+
- Objects with 5+ properties use pooling
325325
- Strings >1KB use pooling
326326
- Smaller data uses traditional `json_encode()`
327327

@@ -331,11 +331,11 @@ $stats = JsonBufferPool::getStatistics();
331331
```php
332332
$middleware = function ($req, $res, $next) {
333333
// Pre-processing
334-
334+
335335
$response = $next($req, $res); // Continue to next middleware
336-
336+
337337
// Post-processing
338-
338+
339339
return $response;
340340
};
341341
```
@@ -346,7 +346,7 @@ $authMiddleware = function ($req, $res, $next) {
346346
if (!$req->header('Authorization')) {
347347
return $res->status(401)->json(['error' => 'Unauthorized']);
348348
}
349-
349+
350350
return $next($req, $res);
351351
};
352352
```
@@ -356,13 +356,13 @@ $authMiddleware = function ($req, $res, $next) {
356356
$enrichMiddleware = function ($req, $res, $next) {
357357
// Add data to request
358358
$req->startTime = microtime(true);
359-
359+
360360
$response = $next($req, $res);
361-
361+
362362
// Add headers to response
363363
$duration = microtime(true) - $req->startTime;
364364
$res->header('X-Response-Time', $duration . 'ms');
365-
365+
366366
return $response;
367367
};
368368
```
@@ -460,7 +460,7 @@ Application::VERSION // Current version string
460460

461461
Complete working examples are available in the `/examples` directory:
462462
- **01-basics** - Hello World, CRUD, Request/Response, JSON API
463-
- **02-routing** - Regex, Parameters, Groups, Constraints
463+
- **02-routing** - Regex, Parameters, Groups, Constraints
464464
- **03-middleware** - Custom, Stack, Auth, CORS
465465
- **04-api** - RESTful API with pagination and validation
466466
- **05-performance** - High-performance mode demonstrations
@@ -488,10 +488,9 @@ Complete working examples are available in the `/examples` directory:
488488

489489
## Community & Support
490490

491-
- **Discord**: https://discord.gg/DMtxsP7z
492491
- **GitHub**: https://github.com/PivotPHP/pivotphp-core
493492
- **Issues**: https://github.com/PivotPHP/pivotphp-core/issues
494493
- **Examples**: Ready-to-run examples in `/examples` directory
495494

496495
---
497-
**PivotPHP Core v1.1.3-dev** - Express.js for PHP 🐘⚡
496+
**PivotPHP Core v1.1.3-dev** - Express.js for PHP 🐘⚡

0 commit comments

Comments
 (0)