chore: complete update

This commit is contained in:
2025-07-17 16:24:20 +02:00
parent 899227b0a4
commit 64a7051137
1300 changed files with 85570 additions and 2756 deletions

View File

@@ -0,0 +1,104 @@
<?php
namespace App\Framework\Core;
use App\Framework\Cache\Cache;
use App\Framework\Cache\CacheInitializer;
use App\Framework\Config\Configuration;
use App\Framework\DI\Container;
use App\Framework\DI\Initializer;
use App\Framework\Discovery\DiscoveryServiceBootstrapper;
use App\Framework\Discovery\Results\DiscoveryResults;
use App\Framework\Http\ResponseEmitter;
use App\Framework\Performance\PerformanceMeter;
use App\Framework\Attributes\Route;
final readonly class ContainerBootstrapper
{
public function __construct(
private Container $container)
{}
public function bootstrap(
string $basePath,
PerformanceMeter $meter,
array $config = []): void
{
// Kern-Dienste im Container registrieren:
$this->container->instance(PerformanceMeter::class, $meter);
$this->container->instance(Cache::class, new CacheInitializer()());
$this->container->instance(Configuration::class, new Configuration($config));
$this->container->instance(PathProvider::class, new PathProvider($basePath));
$this->container->instance(ResponseEmitter::class, new ResponseEmitter());
$this->autowire($this->container->get(PathProvider::class), $this->container->get(Configuration::class));
}
private function autowire(PathProvider $pathProvider, Configuration $configuration):void
{
// Im ContainerBootstrapper
$bootstrapper = new DiscoveryServiceBootstrapper($this->container);
$results = $bootstrapper->bootstrap();
// Ergebnisse sind automatisch im Container verfügbar
/** @var DiscoveryResults $results */
$results = $this->container->get(DiscoveryResults::class);
#$routeResults = $results->get(Route::class);
// Fallback: Versuche auch mit führendem Backslash
/*if (empty($routeResults)) {
$routeResults = $results->get('\\' . $routeClass);
debug('Tried with leading backslash');
}*/
// Fallback: Suche in allen verfügbaren Keys
/*if (empty($routeResults)) {
foreach (array_keys($results->getAllAttributeResults()) as $key) {
if (str_contains($key, 'Route')) {
debug("Found Route-related key: $key");
$routeResults = $results->get($key);
break;
}
}
}*/
#$discovery = new AttributeDiscoveryService($this->container, $pathProvider, $configuration);
#$dresults = ProcessedResults::fromArray($discovery->discoverAndProcess())->get(Route::class);
#debug(count($routeResults));
#dd(count($dresults));
#$cache = $this->container->get(Cache::class);
#$cache->forget('discovery_service');
#$processedResults = $cache->remember('discovery_service', function () use ($discovery) {
#
# // Attribute entdecken und verarbeiten
# return $discovery->discoverAndProcess();
#
# })->value;
#$results = ProcessedResults::fromArray($processedResults);
#$this->container->instance(ProcessedResults::class, $results);
#$this->executeInitializers($results);
}
private function executeInitializers(DiscoveryResults $initializerClasses): void
{
foreach ($initializerClasses->get(Initializer::class) as $initializerClass) {
$instance = $this->container->invoker->invoke($initializerClass['class'], $initializerClass['method']);
$this->container->instance($initializerClass['return'], $instance);
}
}
}