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,61 @@
<?php
declare(strict_types=1);
namespace App\Framework\Router;
use App\Framework\DI\DefaultContainer;
use App\Framework\Http\Request;
use App\Framework\Http\RequestBody;
use App\Framework\Http\Session\Session;
use App\Framework\Validation\Exceptions\ValidationException;
use App\Framework\Validation\Validator;
use Exception;
use ReflectionClass;
use ReflectionNamedType;
use ReflectionProperty;
final readonly class ControllerRequestFactory
{
public function __construct(
private DefaultContainer $container,
private PropertyValueConverter $propertyValueConverter
) {}
/**
* Erstellt und validiert eine ControllerRequest-Instanz
*/
public function createAndValidate(ReflectionClass $requestClass, RequestBody $data): object
{
// Instanz erstellen
$instance = $requestClass->newInstance();
// Eigenschaften befüllen und validieren
foreach ($requestClass->getProperties() as $property) {
$propertyName = $property->getName();
// Wert aus den Daten abrufen
$value = $data->get($propertyName, null);
try {
$this->propertyValueConverter->setPropertyValue($property, $instance, $value);
} catch (\Throwable $e) {
#throw new ValidationException(
# ['Ungültiger Wert für den Typ: ' . $e->getMessage()],
# $propertyName
#);
}
}
$validator = $this->container->get(Validator::class);
$validationResult = $validator->validate($instance);
if ($validationResult->hasErrors()) {
throw new ValidationException($validationResult, 'test');
}
return $instance;
}
}