@P747

Go, расширение DTO класса для принимающего аргумента метода интерфейса?

Подскажите, можно ли в Go реализовать аналог следующего кода на PHP?
<?php

declare(strict_types=1)

interface ActivationRepository
{
    public function tariffActivation(TariffActivationDto $dto): TariffActivationResponseDto;
}

class TariffActivationDto
{
	public string $id = '';
}

final class TariffActivation2Dto extends TariffActivationDto
{
	public string $code = '';
}

class TariffActivationResponseDto
{
}

final class TariffActivationResponse2Dto extends TariffActivationResponseDto
{
}

class TestRepository implements ActivationRepository
{
	public function tariffActivation(TariffActivationDto $dto): TariffActivationResponse2Dto
	{
		var_dump($dto);
		
		return new TariffActivationResponse2Dto();
	}
}

(new TestRepository())->tariffActivation((new TariffActivation2Dto()));


Суть в том, чтобы можно было подавать в метод tariffActivation, расширенные DTO, удовлетворяя интерфейсу, который используется между слоями.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@P747 Автор вопроса
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dmitriylanets
@dmitriylanets
веб-разработчик
Здравствуйте. Параметры которые присущи каждому сервису стоит использовать в конструкторе репозитория, например на php это выглядит так:
class OzonEntityRepository impliments EntityRepositoryInterface{

public function __construct(private string $secretKey, private string $idClient)

}

public function userActivation(UserActivationDto $object){
//.........
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы