chore: complete update
This commit is contained in:
60
src/Framework/QueryBus/QueryHandlerMapper.php
Normal file
60
src/Framework/QueryBus/QueryHandlerMapper.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Framework\QueryBus;
|
||||
|
||||
use App\Framework\Core\AttributeMapper;
|
||||
use ReflectionClass;
|
||||
use ReflectionMethod;
|
||||
|
||||
/**
|
||||
* Mapper für das EventHandler-Attribut
|
||||
*/
|
||||
final class QueryHandlerMapper implements AttributeMapper
|
||||
{
|
||||
/**
|
||||
* Gibt die Attributklasse zurück, die dieser Mapper verarbeitet
|
||||
*/
|
||||
public function getAttributeClass(): string
|
||||
{
|
||||
return QueryHandler::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementiert die map-Methode aus dem AttributeMapper-Interface
|
||||
*
|
||||
* @param object $reflectionTarget Das Reflektionsobjekt (ReflectionClass|ReflectionMethod)
|
||||
* @param object $attributeInstance Die Attributinstanz
|
||||
* @return array|null Die Attributdaten oder null, wenn nicht verarbeitet werden kann
|
||||
*/
|
||||
public function map(object $reflectionTarget, object $attributeInstance): ?array
|
||||
{
|
||||
if (!($reflectionTarget instanceof ReflectionMethod)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$parameters = $reflectionTarget->getParameters();
|
||||
|
||||
// Event-Handler müssen mindestens einen Parameter haben (das Event)
|
||||
if (count($parameters) < 1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$eventType = $parameters[0]->getType();
|
||||
if (!$eventType || $eventType->isBuiltin()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$eventClassName = $eventType->getName();
|
||||
|
||||
return [
|
||||
'class' => $reflectionTarget->getDeclaringClass()->getName(),
|
||||
'method' => $reflectionTarget->getName(),
|
||||
'event_class' => $eventClassName,
|
||||
'attribute_data' => [
|
||||
'priority' => $attributeInstance->priority ?? 0,
|
||||
'stopPropagation' => $attributeInstance->stopPropagation ?? false
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user