Skip to content

Diferenças de Tipos Request/Response #6

@code-cfernandes

Description

@code-cfernandes

🐛 Descrição do Bug

PivotPHP Core usa suas próprias classes Request/Response que não implementam PSR-7, causando incompatibilidade de tipos nos controllers.

Erro Específico

Argument #1 ($request) must be of type Psr\Http\Message\ServerRequestInterface, 
PivotPHP\Core\Http\Request given

Impacto

  • ❌ Controllers não podem usar type hints PSR-7
  • ❌ Quebra a interoperabilidade com outras bibliotecas PSR-7

Ações para Correção

Solução 1: Implementar PSR-7 no PivotPHP Core

// No PivotPHP Core
namespace PivotPHP\Core\Http;

use Psr\Http\Message\ServerRequestInterface;

class Request implements ServerRequestInterface
{
    // Implementar todos os métodos PSR-7
}

Solução 2: Criar Factory para Conversão

// src/Http/Psr7Factory.php
class Psr7Factory
{
    public function createFromPivotRequest(Request $request): ServerRequestInterface
    {
        return new Psr7Request(
            $request->getMethod(),
            $request->getUri(),
            $request->getHeaders(),
            $request->getBody()
        );
    }
}

Solução 3: Usar Dupla Interface nos Controllers

// Controller que aceita ambos os tipos
public function index(Request|ServerRequestInterface $request): Response|ResponseInterface
{
    // Lógica adaptativa
}

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions