Ситуация следующая. Есть шина команд, которая принимает команду или массив команд и возвращает объект с id операции и результатом выполнения команды или массив объектов-операций соответственно.
interface CommandBusInterface
{
/**
* @param CommandInterface|CommandInterface[] $commands
* @return OperationInterface|OperationInterface[]
* @throws PropagationStoppedException
* @throws CommandBusException
*/
public function dispatch(CommandInterface|array $commands): OperationInterface|array ;
}
interface OperationInterface
{
public UuidInterface $uuid {
get;
}
public mixed $result {
get;
}
public function withResult(mixed $result): OperationInterface;
}
Хотелось бы чтобы при вызове
CommandBus::dispatch()
phpstorm подсказывал тип возвращаемого результата.
Допустим, есть команда
CreateUser
и обработчик
CreateUserHandler
class CreateUserHandler {
public function handle(CreateUserCommand $command): User
}
Возможно ли сделать так, чтобы для вызова
$result = $bus->dispatch($createUserCommand)->result
phpstrom ассоциировал
$result
c
CreateUserHandler::handle()