0: cs fixer понятно наверное
1: protected не нужны потому что наследование не нужно
2: Ну типы надо ставить
3: Ой, это ж ещё и не симфа наверн. Вобщем хедерами в идеале пусть хттп клиент сам рулит, и они задаются где-то в конфиге, но это ещё +- норм, ок
4: Ну return mixed ни о чем, нужна DTO
5: getWeather
, хотя бы, я бы и сам класс переназвал бы как-нибудь без суффикса service
, мол YandexWeatherClient
6: Нужна DTO с проставленными типами, и маппинг результата на неё. Хоть ручками, хоть через сериалайзер какой, чтобы во первых было видно что возвращается и как с этим работать, во вторых проверялось хотя-бы в рантайме. Сейчас неясно что возвращается + будет боль если апиху сломают, потому что упадёт в коде даже не клиент к апихе, а какой-то класс работающий с респонсом
7: Ну из конфигов надо либ собрать структурку(DTO) и прокинуть в конструктор, либо просто в классе захардкодить, это ж параметры апихи, они не будут переиспользоваься
по теме дто вопрос.
Как лучше для дто задавать значения?
Например:
class JsonDataTransferObject extends DataTransferObject
{
/** @var int $temperature */
public $temperature;
}
Я создал DTO, оно будет содержать нужные мне поля из JSON моего.
Есть разные варианты инициализации значений для $temperature, самый топорный:
$data = json_decode($response->getBody());
$weather = new JsonDataTransferObject([
'temperature' => $data->fact->temp
]);
Оно работает, но это хуитой кажется. Я по факту тоже самое делаю, также беру json, декодирую его чтобы обратиться к нужному полю и записываю его в DTO класс свой.
Куда это вынести или может иначе/более изящно сделать?