Size: a a a

🐘PHPStorm TIPS & TRICKS

2020 May 25

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Помогите, пожалуйста, с дизайном. Имеются такие сущности:

Controller::showData
выполнение запроса к сервису, получение этих данных в виде массива объектов, отдаем на фронт в виде json

Service:getData
запрос к DAO на получение данных, отдаем контроллеру

DAO:getData
получение данных в виде двумерного массива из источника, преобразование в массив объектов типа EntityDTO, отдаем сервису

EntityDTO implements JsonSerializable
обёртка над массивом, есть возможность сетать произвольные свойства. Реализован магический __get, который может возвращать значения если есть метод get*****.

Вопрос такой: хочу в результирующем json в у каждого entity иметь дополнительное поле с урлом paymentUrl. Генерация paymentUrl имеет признак бизнес-логики: в зависимости от поля Creditor ссылка на оплату ведет на разные сайты.

На каком уровне обработки генерировать и сетать этот урл?

Возможные варианты:

1. В контроллере - Получаем массив DTO-шек, через foreach сетаем DTOшке урл. Как понимаю, это плохой подход: бизнес-логику в контроллер лучше не пихать, чтобы не распухали

2. На уровне сервиса. foreach + сет.

3. На уровне DAO. foreach + сет. Но это не обязанность DAO, поэтому такой вариант не принимаем.

4. На уровне DTO. Объявляем геттер getPaymentUrl и логику кладём в него. Видится, что это тоже плохой подход, DTOшка тоже не должна иметь бизнес логики.

Правильно ли понимаю, что лучше всего переложить генерацию этого урла на сервис? Все остальные компоненты не подходят ввиду специфики: бизнес-логика и работа с урлами. Например, работать с менеджером урлов фреймворка из DTOшки или DAO - это очень плохо.
источник

TC

Tony Coiͪ̓n in 🐘PHPStorm TIPS & TRICKS
1. Не все любят тонкие контроллеры:)
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Tony Coiͪ̓n
1. Не все любят тонкие контроллеры:)
это до тех пор, пока не потребуется поработать с чужими толстыми контроллерами или пока логика толстого контроллера не понадобится в десятке других мест)
источник

АЯ

Александр Яковлев... in 🐘PHPStorm TIPS & TRICKS
а я вот к своему магазину все откладываю тесты написать, а то заебался чинить одно и смотреть, как валится все остальное Х)
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
amorphine
Помогите, пожалуйста, с дизайном. Имеются такие сущности:

Controller::showData
выполнение запроса к сервису, получение этих данных в виде массива объектов, отдаем на фронт в виде json

Service:getData
запрос к DAO на получение данных, отдаем контроллеру

DAO:getData
получение данных в виде двумерного массива из источника, преобразование в массив объектов типа EntityDTO, отдаем сервису

EntityDTO implements JsonSerializable
обёртка над массивом, есть возможность сетать произвольные свойства. Реализован магический __get, который может возвращать значения если есть метод get*****.

Вопрос такой: хочу в результирующем json в у каждого entity иметь дополнительное поле с урлом paymentUrl. Генерация paymentUrl имеет признак бизнес-логики: в зависимости от поля Creditor ссылка на оплату ведет на разные сайты.

На каком уровне обработки генерировать и сетать этот урл?

Возможные варианты:

1. В контроллере - Получаем массив DTO-шек, через foreach сетаем DTOшке урл. Как понимаю, это плохой подход: бизнес-логику в контроллер лучше не пихать, чтобы не распухали

2. На уровне сервиса. foreach + сет.

3. На уровне DAO. foreach + сет. Но это не обязанность DAO, поэтому такой вариант не принимаем.

4. На уровне DTO. Объявляем геттер getPaymentUrl и логику кладём в него. Видится, что это тоже плохой подход, DTOшка тоже не должна иметь бизнес логики.

Правильно ли понимаю, что лучше всего переложить генерацию этого урла на сервис? Все остальные компоненты не подходят ввиду специфики: бизнес-логика и работа с урлами. Например, работать с менеджером урлов фреймворка из DTOшки или DAO - это очень плохо.
4 + 2 имхо
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
спасибо, буду двигаться в этом направлении
источник

TC

Tony Coiͪ̓n in 🐘PHPStorm TIPS & TRICKS
amorphine
это до тех пор, пока не потребуется поработать с чужими толстыми контроллерами или пока логика толстого контроллера не понадобится в десятке других мест)
Это конечно да:)
Че б почитать такого, как правильно решать такие задачИ7
источник

АЖ

Антон Желтов... in 🐘PHPStorm TIPS & TRICKS
@amorphine а какой фреймворк?
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Антон Желтов
@amorphine а какой фреймворк?
yii1
источник

A

Aen Elle⛧ in 🐘PHPStorm TIPS & TRICKS
А он до сих пор считается актуальным?
источник

A

Aen Elle⛧ in 🐘PHPStorm TIPS & TRICKS
Это наверное в старых проектах которые ещё делали на йи1?
источник

АЖ

Антон Желтов... in 🐘PHPStorm TIPS & TRICKS
Какая древность
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Aen Elle⛧
А он до сих пор считается актуальным?
Нет, есть 2я версия.
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Aen Elle⛧
А он до сих пор считается актуальным?
Для тебя у меня есть другой вопрос, интересно, что ты думаешь.
Я тут мастера герванта в 5й раз прошел и хочу сказать, что Трисс - true love.
источник

A

Aen Elle⛧ in 🐘PHPStorm TIPS & TRICKS
amorphine
Для тебя у меня есть другой вопрос, интересно, что ты думаешь.
Я тут мастера герванта в 5й раз прошел и хочу сказать, что Трисс - true love.
Я тоже неоднократно задумывался об этом и думаю также))
источник

A

Aen Elle⛧ in 🐘PHPStorm TIPS & TRICKS
Хотя и есть кто любят стервозных))
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
amorphine
Для тебя у меня есть другой вопрос, интересно, что ты думаешь.
Я тут мастера герванта в 5й раз прошел и хочу сказать, что Трисс - true love.
Хех, я только второй раз прохожу именно 3-ю часть
Первый раз без дополнений, второй — с ними
Полностью разный опыт получаю по итогу
Получилась реиграбельность похлеще 2-й части
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
amorphine
Для тебя у меня есть другой вопрос, интересно, что ты думаешь.
Я тут мастера герванта в 5й раз прошел и хочу сказать, что Трисс - true love.
А как же Шани?)
источник

A

Aen Elle⛧ in 🐘PHPStorm TIPS & TRICKS
Ведьмак блудливый мужик, но по сути дела однолюб😂
источник

A

Aen Elle⛧ in 🐘PHPStorm TIPS & TRICKS
Да и дело было в Витальде
источник