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

@@ -19,6 +19,7 @@ use App\Framework\Http\Status;
use App\Framework\Meta\MetaData;
use App\Framework\Performance\MemoryMonitor;
use App\Framework\Redis\RedisConnectionPool;
use App\Framework\Router\CompiledRoutes;
use App\Framework\Router\Result\ViewResult;
final readonly class Dashboard
@@ -69,8 +70,8 @@ final readonly class Dashboard
#[Route(path: '/admin/routes', method: Method::GET)]
public function routes(): ViewResult
{
$routeRegistry = $this->container->get('App\Framework\Router\RouteRegistry');
$routes = $routeRegistry->getRoutes();
$compiledRoutes = $this->container->get(CompiledRoutes::class);
$routes = $compiledRoutes->getAllNamedRoutes();
// Sort routes by path for better readability
usort($routes, function ($a, $b) {
@@ -149,7 +150,7 @@ final readonly class Dashboard
}
$env[] = [
'key' => $key,
'value' => is_array($value) ? json_encode($value) : (string)$value,
'value' => is_array($value) ? (json_encode($value) ?: '[encoding failed]') : (string)$value,
];
}

View File

@@ -31,7 +31,7 @@ final readonly class Images
try {
$variantInfo = $image->variants[0]->filename ?? 'no variant';
echo "<small>Variant: " . htmlspecialchars($variantInfo) . "</small>";
} catch (Error $e) {
} catch (\Error $e) {
echo "<small>Variants not loaded yet</small>";
}
}

View File

@@ -14,7 +14,7 @@ class RoutesViewModel
public string $title = 'Routes';
public function __construct(
/** @var array<string, mixed> */
/** @var list<array<string, mixed>> */
public array $routes = []
) {
}

View File

@@ -9,7 +9,7 @@ use App\Framework\Auth\Auth;
use App\Framework\Cache\Cache;
use App\Framework\Discovery\Results\DiscoveryRegistry;
class ShowDiscovery
final readonly class ShowDiscovery
{
public function __construct(
private DiscoveryRegistry $results,
@@ -28,8 +28,8 @@ class ShowDiscovery
echo "<ul>";
$attributeMappings = $this->results->attributes()->get($attributeType);
foreach ($attributeMappings as $attributeMapping) {
$className = $attributeMapping->class->getFullyQualified();
$methodName = $attributeMapping->method?->toString() ?? '';
$className = $attributeMapping->className->getFullyQualified();
$methodName = $attributeMapping->methodName?->toString() ?? '';
echo "<li>" . $className . '::' . $methodName . '()</li>';
}
echo "</ul>";

View File

@@ -13,7 +13,7 @@ use App\Framework\Http\Request;
use App\Framework\Meta\MetaData;
use App\Framework\Router\Result\ViewResult;
class ShowImageSlots
final readonly class ShowImageSlots
{
public function __construct(
private ImageSlotRepository $imageSlotRepository,
@@ -25,6 +25,7 @@ class ShowImageSlots
public function show(): ViewResult
{
$slots = $this->imageSlotRepository->getSlots();
$slotName = '';
/** @var ImageSlot $slot */
foreach ($slots as $slot) {