вопрос по SOLID на коде
Покажу простой rest api псевдо код:
UserController:
fn all():
return this.userService.all().array()
fn single(id):
return this.userService.single(id).array()
UserService:
fn all(): UserServiceDTOCollection
users = this.repo.all()
users.convert(UserServiceDTO.class)
return users
fn single(id): UserServiceDTO
user = this.repo.single(id)
user.convert(UserServiceDTO.class)
return user
UserRepository:
fn all(): UserRepositoryDTOCollection
...
fn single(id): UserRepositoryDTO
Вот мой код, если кратно тут 3 слоя: UserController, UserService, UserRepository, все отделены DTO'шками.
Как по принципам солид добавлять/удалять/менять контроллеры?
Как вижу я:
Добавлять/изменять - UserController2 extends UserController и DI:container(UserControllerInterface::class, new UserController2)
Удалять - тут уже в route.php просто удалять путь
Если поступила задача юзеру добавть новое поле, например Avatar, то как это сделать?
Как я вижу:
создаю UserResitoryWithAvatar, UserRepositoryAvatarDTO, UserRepositoryAvatarDTOCollection,
тоже на сервис UserServiceWithAvatar, UserServiceWithAvatarDTO, UserServiceWithAvatarDTOCollection
и DI:container(UserServiceInterface::class, new UserServiceWithAvatar),
DI:container(UserREpositoryWithAvatarInterface::class, new UserREpositoryWithAvatar)