Size: a a a

2020 September 14

RT

Roman Tsurkanu in Yii Framework 3
Сергей Предводителев
Смысл сервиса, когда я могу сразу репозиторий запросить?
Репозиторий - запросы к хранилищу, сервис - бизнес логика
источник

RT

Roman Tsurkanu in Yii Framework 3
да и скорее всего он будет у тебя не такой простой и будет иметь не только один репозитторий на входе
источник

СП

Сергей Предводителев... in Yii Framework 3
Roman Tsurkanu
Репозиторий - запросы к хранилищу, сервис - бизнес логика
Согласен, если есть какая-то бизнес-логика, но когда только запрос среднего возраста - проще сразу к репозиторию...

Но тут как раз вопрос про репозиторий. Если таких методов много в нём и он разрастается, то хочется его раздробить на классы.
источник

RT

Roman Tsurkanu in Yii Framework 3
дроби
источник

RT

Roman Tsurkanu in Yii Framework 3
UserRepository UserStatisticRepository UserHistoryrepository
источник

RT

Roman Tsurkanu in Yii Framework 3
только следи чтобы там бизнес логика не оказалась
источник

RT

Roman Tsurkanu in Yii Framework 3
сделать запрос и вернуть результат, больше там ничего не должно быть
источник

СП

Сергей Предводителев... in Yii Framework 3
Roman Tsurkanu
сделать запрос и вернуть результат, больше там ничего не должно быть
👌
источник

СП

Сергей Предводителев... in Yii Framework 3
Спасибо
источник

RT

Roman Tsurkanu in Yii Framework 3
Sergei Iamskoi
Не вижу у них каких-либо параметров, на тему прод\девелоп, показывать только HttpException и т.д. Т.е. надо самому реализовывать этой функционал на их базе и использовать свои хендлеры и кэтчеры?
А что надо получить? Есть например ErrorHandler::$exposeDetails
источник

RT

Roman Tsurkanu in Yii Framework 3
Можно для определнных исключений сделать свою мидлвару, которая будет их рендерить в другом формате
источник

RT

Roman Tsurkanu in Yii Framework 3
я вот так делал
источник

RT

Roman Tsurkanu in Yii Framework 3
источник

SI

Sergei Iamskoi in Yii Framework 3
Roman Tsurkanu
А что надо получить? Есть например ErrorHandler::$exposeDetails
Поведение как в Yii2: на девелопе нам вываливается весь стэктрейс ошибки, а в случае прода, сообщение логгируется а пользователю выдается 500я ошибка с сообщением, допустим, “ServerError”. А для *HttpException формируется соответствущий StatusCode с наименованием и описанием из эксепшена. Ну т.е. в yii2 это из коробки, регулируется только с помощью YII_ENV и YII_DEBUG
источник

RT

Roman Tsurkanu in Yii Framework 3
ErrorHandler::$exposeDetails вроде вот этот флаг то и делает
источник

RT

Roman Tsurkanu in Yii Framework 3
но в зависимости от окружения надо пока самому настроить
источник

DS

Dmitriy S in Yii Framework 3
Roman Tsurkanu
final class UserStatisticService
{
   private UserRepository $repository;

   public function __construct(UserRepository $repository)
   {
       $this->repository = $repository;
   }

   public function getAverageAge(): int
   {
       return $this->repository->getAverageAgeAllUsers();
   }
}
final class UserStatisticService
{
   private UserRepository $repository;

   public function __construct(UserRepository $repository)
   {
       $this->repository = $repository;
   }

   public function getAverageAge(): int
   {
       return $this->repository
                   ->select()
                   ->buildQuery()
                   ->avg('age');
   }
}
источник

СП

Сергей Предводителев... in Yii Framework 3
Roman Tsurkanu
UserRepository UserStatisticRepository UserHistoryrepository
Если запрос делает джойны других сущностей (например User + Post, считает какое-нибудь среднее количество постов на пользователя), то класть этот код в репозиторий пользователя - норм?
источник

RT

Roman Tsurkanu in Yii Framework 3
я считаю норм
источник

RT

Roman Tsurkanu in Yii Framework 3
@siamskoi укажи в локальном конфиге withExposedDetails а в просто конфиге withoutExposedDetails
источник