diff --git a/src/Framework/DI/InitializerDependencyGraph.php b/src/Framework/DI/InitializerDependencyGraph.php index 1d4aea06..e21290a1 100644 --- a/src/Framework/DI/InitializerDependencyGraph.php +++ b/src/Framework/DI/InitializerDependencyGraph.php @@ -48,11 +48,6 @@ final class InitializerDependencyGraph dependencies: $dependencies ); - // Debug RouterSetup specifically - if (str_contains($className->toString(), 'RouterSetup')) { - error_log("InitializerDependencyGraph: Adding RouterSetup node - " . $className->toString() . " -> " . $returnType); - error_log("InitializerDependencyGraph: RouterSetup dependencies: " . implode(', ', $dependencies)); - } $this->nodes[$returnType] = $node; $this->adjacencyList[$returnType] = $dependencies; diff --git a/src/Framework/Database/PdoConnection.php b/src/Framework/Database/PdoConnection.php index a8d69fd0..9f38d8cf 100644 --- a/src/Framework/Database/PdoConnection.php +++ b/src/Framework/Database/PdoConnection.php @@ -16,13 +16,10 @@ use App\Framework\Database\ValueObjects\SqlState; final class PdoConnection implements ConnectionInterface { - private \PDO $pdo; - public function __construct( - \PDO $pdo, + private \PDO $pdo, private ?SqlStateErrorMapper $errorMapper = null ) { - $this->pdo = $pdo; $this->errorMapper ??= new SqlStateErrorMapper(); # SOllte bereits aus den Options kommen! @@ -38,7 +35,7 @@ final class PdoConnection implements ConnectionInterface return $statement->rowCount(); } catch (\PDOException $e) { - throw $this->handlePdoException($e, $query->sql); + $this->handlePdoException($e, $query->sql); } } @@ -50,7 +47,7 @@ final class PdoConnection implements ConnectionInterface return new PdoResult($statement); } catch (\PDOException $e) { - throw $this->handlePdoException($e, $query->sql); + $this->handlePdoException($e, $query->sql); } } diff --git a/src/Framework/ErrorAggregation/Storage/DatabaseErrorStorage.php b/src/Framework/ErrorAggregation/Storage/DatabaseErrorStorage.php index ef3a3611..ce39401a 100644 --- a/src/Framework/ErrorAggregation/Storage/DatabaseErrorStorage.php +++ b/src/Framework/ErrorAggregation/Storage/DatabaseErrorStorage.php @@ -139,7 +139,7 @@ final readonly class DatabaseErrorStorage implements ErrorStorageInterface public function getPatternById(string $patternId): ?ErrorPattern { $sql = "SELECT * FROM error_patterns WHERE id = ?"; - $result = $this->connection->query($sql, [$patternId]); + $result = $this->getConnection()->query($sql, [$patternId]); if (empty($result)) { return null; @@ -183,7 +183,7 @@ final readonly class DatabaseErrorStorage implements ErrorStorageInterface LIMIT ? "; - $results = $this->connection->query($sql, [$service, $limit]); + $results = $this->getConnection()->query($sql, [$service, $limit]); return array_map([$this, 'hydratePattern'], $results); } diff --git a/src/Framework/Http/HttpMiddlewareChain.php b/src/Framework/Http/HttpMiddlewareChain.php index 70de6bba..062577c5 100644 --- a/src/Framework/Http/HttpMiddlewareChain.php +++ b/src/Framework/Http/HttpMiddlewareChain.php @@ -30,21 +30,20 @@ final readonly class HttpMiddlewareChain implements HttpMiddlewareChainInterface $this->stateManager = new MiddlewareStateManager()->forRequest($request); - // Start der Middleware-Chain loggen - error_log("🚀 MIDDLEWARE CHAIN START - URI: {$request->path}, Method: {$request->method->value}, Middleware-Count: " . count($this->middlewares)); - // Middleware-Stack durchlaufen $resultContext = $this->doProcessMiddlewareStack($context, 0); - // Ende der Middleware-Chain loggen + // Ende der Middleware-Chain if ($resultContext->hasResponse()) { - error_log("✅ MIDDLEWARE CHAIN COMPLETE - Final Response Status: {$resultContext->response?->status->value}"); - return $resultContext->response; } // Wenn keine Response vorhanden ist, ist das ein Fehler in der Middleware-Konfiguration - error_log("❌ MIDDLEWARE CHAIN FAILED - No response created after processing all middlewares"); + $this->logger->error('No response created after processing all middlewares', LogContext::withData([ + 'uri' => $request->path, + 'method' => $request->method->value, + 'middleware_count' => count($this->middlewares), + ])); throw new \RuntimeException(sprintf( 'Keine Response nach Middleware-Chain erstellt. Stellen Sie sicher, dass eine DefaultResponseMiddleware konfiguriert ist. URI: %s, Method: %s, Middleware-Count: %d', @@ -66,12 +65,6 @@ final readonly class HttpMiddlewareChain implements HttpMiddlewareChainInterface $middleware = $this->middlewares[$index]; $middlewareName = $this->getMiddlewareName($middleware); - // Start der Middleware loggen - error_log("🔄 MIDDLEWARE #{$index} START: {$middlewareName}"); - - // Status VOR der Middleware loggen - $this->logDebug("VOR Middleware #{$index} ({$middlewareName})", $context, $index); - // Next-Handler erstellen, der zur nächsten Middleware weiterleitet $next = new readonly class ($this, $index, $middlewareName) implements Next { public function __construct( @@ -157,38 +150,13 @@ final readonly class HttpMiddlewareChain implements HttpMiddlewareChainInterface ?int $responseBeforeStatus, ?int $responseAfterStatus ): void { - // Response wurde erstellt - if (! $hadResponseBefore && $hasResponseAfter) { - error_log("✅ RESPONSE CREATED by Middleware #{$index} ({$middlewareName}) - Status: {$responseAfterStatus}"); - - return; - } - - // Response wurde verloren + // Response wurde verloren - das ist ein Problem if ($hadResponseBefore && ! $hasResponseAfter) { - error_log("❌ RESPONSE LOST by Middleware #{$index} ({$middlewareName}) - Previous Status: {$responseBeforeStatus}"); - - return; - } - - // Response-Status wurde geändert - if ($hadResponseBefore && $hasResponseAfter && $responseBeforeStatus !== $responseAfterStatus) { - error_log("🔄 RESPONSE MODIFIED by Middleware #{$index} ({$middlewareName}) - Status: {$responseBeforeStatus} → {$responseAfterStatus}"); - - return; - } - - // Response blieb unverändert (normal) - if ($hadResponseBefore && $hasResponseAfter && $responseBeforeStatus === $responseAfterStatus) { - error_log("➡️ RESPONSE PASSED THROUGH Middleware #{$index} ({$middlewareName}) - Status: {$responseAfterStatus}"); - - return; - } - - // Keine Response vor und nach der Middleware (normal für frühe Middlewares) - // @phpstan-ignore booleanNot.alwaysTrue - if (! $hadResponseBefore && ! $hasResponseAfter) { - error_log("⚪ NO RESPONSE before/after Middleware #{$index} ({$middlewareName})"); + $this->logger->warning('Response lost by middleware', LogContext::withData([ + 'middleware' => $middlewareName, + 'middleware_index' => $index, + 'previous_status' => $responseBeforeStatus, + ])); } } diff --git a/src/Framework/Http/Middlewares/RoutingMiddleware.php b/src/Framework/Http/Middlewares/RoutingMiddleware.php index a0c1ca48..1c739fe5 100644 --- a/src/Framework/Http/Middlewares/RoutingMiddleware.php +++ b/src/Framework/Http/Middlewares/RoutingMiddleware.php @@ -149,11 +149,6 @@ final readonly class RoutingMiddleware implements HttpMiddleware ); } - error_log("RoutingMiddleware: Setting CONTROLLER_RESULT of type: " . get_class($result)); - if (method_exists($result, 'template')) { - error_log("RoutingMiddleware: Result template: " . $result->template); - } - $stateManager->set(StateKey::CONTROLLER_RESULT, $result); // Nächste Middleware aufrufen