Сервис запроса/ответа, детские вопросы по архитектуре

grigori

( ͡° ͜ʖ ͡°)
Команда форума
@Тугай, по смыслу Адаптер - это Context, DTO - Request, а кодек - Serialize :)

На каждый удаленный метод свой DTO? Типа условно $api->getCurrency(CurrencyDTO $object) ? А ответ в тот же DTO помещать?
зависит от логики и API, если у тебя много совсем разных вызовов - именованная фабрика с набором методов, которые генерируют соответствующие DTO
 

Тугай

Новичок
Примерно так:
Код:
class XmlRequest {
    protected $requestXml;
    protected $context = ['apikey' => 'zxcv'];
    public function getResponse() { ... /* retruns new XmlResponse */... }   
}   
class XmlResponse {
    public function getStatus() {}
    public function getResut() {}
}

class GetCurrencyRequest extends XmlRequest {
    function __construct($data, $context = []) { $requestXml = SerializeToXml($data); }
}

class GetCurrencyResponse extends XmlResponse {}

class ServiceApi {
    public function getCurrency($data) {
        $request = new GetCurrencyRequest($data);
        $response = $request->getResponse();
        if ($response->getStatus() == 'ok') {
            return $response->getResult();
        }
    }   
}
.
XmlRequest - это транспорт, $conext - это его конфигурация, он отправляет xml, получает назад xml.
GetCurrencyRequest, XmlResponse, GetCurrencyReesponse - это протокол, превращает данные в xml запрос и результат обратно из xml в данные результата.
ServiceApi - прикладной уровень.
 
Сверху