Files
michaelschiemer/test_request_container.php
Michael Schiemer e30753ba0e 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
2025-09-12 20:05:18 +02:00

69 lines
2.7 KiB
PHP

<?php
require __DIR__ . '/vendor/autoload.php';
use App\Framework\Performance\EnhancedPerformanceCollector;
use App\Framework\DateTime\SystemClock;
use App\Framework\DateTime\SystemHighResolutionClock;
use App\Framework\Core\AppBootstrapper;
use App\Framework\Performance\MemoryMonitor;
echo "=== Request Container Test ===\n";
try {
$basePath = __DIR__;
$clock = new SystemClock();
$highResClock = new SystemHighResolutionClock();
$memoryMonitor = new MemoryMonitor();
$collector = new EnhancedPerformanceCollector($clock, $highResClock, $memoryMonitor, enabled: true);
$bootstrapper = new AppBootstrapper($basePath, $collector, $memoryMonitor);
echo "1. Creating worker container...\n";
$container = $bootstrapper->bootstrapWorker();
echo "2. Container created successfully\n";
echo "3. Testing Request resolution...\n";
// Try to resolve Request interface
$request = $container->get('App\\Framework\\Http\\Request');
echo "4. ✅ SUCCESS: Request resolved as " . get_class($request) . "\n";
echo "5. Is HttpRequest instance: " . ($request instanceof \App\Framework\Http\HttpRequest ? 'YES' : 'NO') . "\n";
// Check discovery registry
echo "\n=== Discovery Registry Check ===\n";
$registry = $container->get('App\\Framework\\Discovery\\Results\\DiscoveryRegistry');
$initializers = $registry->getInitializersByClass();
echo "Total initializers: " . count($initializers) . "\n";
$requestFactoryFound = false;
foreach ($initializers as $class => $methods) {
if (str_contains($class, 'RequestFactory')) {
echo "Found RequestFactory: $class\n";
foreach ($methods as $method) {
echo " Method: $method\n";
}
$requestFactoryFound = true;
}
}
if (!$requestFactoryFound) {
echo "❌ RequestFactory not found in discovery registry!\n";
}
// Try creating request directly
echo "\n=== Direct Request Creation Test ===\n";
$requestFactory = $container->get('App\\Framework\\Http\\RequestFactory');
echo "RequestFactory resolved: " . get_class($requestFactory) . "\n";
$directRequest = $requestFactory->createFromGlobals();
echo "Direct request created: " . get_class($directRequest) . "\n";
echo "Is Request interface: " . ($directRequest instanceof \App\Framework\Http\Request ? 'YES' : 'NO') . "\n";
} catch (Throwable $e) {
echo "ERROR: " . $e->getMessage() . "\n";
echo "FILE: " . $e->getFile() . ":" . $e->getLine() . "\n";
if (str_contains($e->getMessage(), 'Cannot instantiate')) {
echo "\n=== ANALYSIS ===\n";
echo "This suggests the Discovery system did not register the RequestFactory initializer\n";
}
}