fix: resolve RedisCache array offset error and improve discovery diagnostics

- Fix RedisCache driver to handle MGET failures gracefully with fallback
- Add comprehensive discovery context comparison debug tools
- Identify root cause: WEB context discovery missing 166 items vs CLI
- WEB context missing RequestFactory class entirely (52 vs 69 commands)
- Improved exception handling with detailed binding diagnostics
This commit is contained in:
2025-09-12 20:05:18 +02:00
parent 8040d3e7a5
commit e30753ba0e
46990 changed files with 10789682 additions and 89639 deletions

View File

@@ -4,14 +4,16 @@ declare(strict_types=1);
namespace App\Application\Controller;
use App\Framework\Http\Attribute\Route;
use App\Framework\Attributes\Route;
use App\Framework\Http\Headers;
use App\Framework\Http\HttpRequest;
use App\Framework\Http\HttpResponse;
use App\Framework\Http\Method;
use App\Framework\Http\Result\HtmlResult;
use App\Framework\Http\Result\HttpResponse;
use App\Framework\Http\Status;
use App\Framework\QrCode\ErrorCorrectionLevel;
use App\Framework\QrCode\QrCodeGenerator;
use App\Framework\QrCode\QrCodeVersion;
use App\Framework\Router\Result\HtmlResult;
/**
* QR Code Test Controller
@@ -29,7 +31,7 @@ final readonly class QrCodeTestController
* Show QR code test page with multiple examples
*/
#[Route(path: '/test/qr-codes', method: Method::GET)]
public function showTestPage(HttpRequest $request): HttpResponse
public function showTestPage(HttpRequest $request): HtmlResult
{
// Generate various test QR codes
$examples = [
@@ -120,9 +122,9 @@ final readonly class QrCodeTestController
* Generate individual QR code for API testing
*/
#[Route(path: '/test/qr-code', method: Method::GET)]
public function generateTestQrCode(HttpRequest $request): HttpResponse
public function generateTestQrCode(HttpRequest $request): HtmlResult|HttpResponse
{
$data = $request->query->get('data', 'Test QR Code from API');
$data = (string) $request->query->get('data', 'Test QR Code from API');
$format = $request->query->get('format', 'svg'); // svg or datauri
$errorLevel = $request->query->get('error', 'M');
$version = $request->query->get('version');
@@ -147,15 +149,15 @@ final readonly class QrCodeTestController
$svg = $this->qrCodeGenerator->generateSvg($data, $errorCorrectionLevel, $qrVersion);
return new HttpResponse(
body: $svg,
statusCode: 200,
headers: ['Content-Type' => 'image/svg+xml']
Status::OK,
new Headers(['Content-Type' => 'image/svg+xml']),
$svg
);
}
} catch (\Exception $e) {
return new HtmlResult(
"<h1>QR Code Generation Error</h1><p>{$e->getMessage()}</p>",
500
Status::INTERNAL_SERVER_ERROR
);
}
}
@@ -173,7 +175,7 @@ final readonly class QrCodeTestController
$analysis = $qrCode['analysis'];
$analysisHtml = '';
foreach ($analysis as $key => $value) {
$displayValue = is_object($value) ? class_basename($value) : $value;
$displayValue = is_object($value) ? basename(str_replace('\\', '/', get_class($value))) : $value;
$analysisHtml .= "<tr><td>{$key}</td><td>{$displayValue}</td></tr>";
}