Crud генератор слоистой архитектуры

Обсуждаем, как правильно строить приложения
Ответить
nikitakls
Сообщения: 47
Зарегистрирован: 2011.01.25, 08:18

Crud генератор слоистой архитектуры

Сообщение nikitakls »

Хочу вынести на суд сообщества свой генератор слоистой архитектуры.
https://github.com/nikitakls/gii-crud-services

Устанавливается через composer:

Код: Выделить всё

composer require --dev nikitakls/yii2-gii-scrud "*"
Далее нужно подключить генератор в конфиге:

Код: Выделить всё

    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'generators' => [
            'scrud' => [
                'class' => 'nikitakls\gii\scrud\Generator',
            ]
        ],
    ];

Думаю кому-то пригодится этот инструмент.
На выходе получается такая структура:
  • /forms/ModelForm.php
  • /repository/ModelRepository.php

    Код: Выделить всё

    class ModelRepository{
        public function get($pk)
        protected function getByPk($id, $canCache = true, $pk = 'id')
        protected function getBy($condition)
        public function remove(Model $model)
        public function clearCache()
        public function save(Model $model, $runValidation = true, $attributeNames = null)
    }
    
  • /services/ModelService.php

    Код: Выделить всё

    class ModelService{
        public function __construct(ModelRepository $Models)
        public function create(ModelForm $form)
        public function edit(int $id, ModelForm $form)
        public function remove(int $id)
    }
    
  • /controllers/ModelController.php
  • /models/ModelSearch.php
  • views
С удовольствием бы послушала аргументы и советы.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Crud генератор слоистой архитектуры

Сообщение ElisDN »

1. Почему репозиторий кидает HttpException?
2. Почему класс поиска наследуется от сущности?
3. Когда вызывается clearCache()? Почему из IdentityMap сущность не очищается в remove()? Почему getBy не работает с IdentityMap?
4. Зачем здесь $runValidation и $attributeNames? С домеными сущностями валидация в них не нужна.
5. Как организуется сохранение всего агрегата? Без этого метод save() при работе со связями не имеет смысла.
sda
Сообщения: 334
Зарегистрирован: 2013.12.19, 09:29

Re: Crud генератор слоистой архитектуры

Сообщение sda »

ElisDN, где здесь вообще слоистая архитектура. Тут всё что генерируется зависит от фреймворка, который есть слой представления. Нижний слой, о верхнем знать не должен. Здесь всё наоборот.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Crud генератор слоистой архитектуры

Сообщение zelenin »

плохо вижу - в этой слоистой архитектуре слои-то есть?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Crud генератор слоистой архитектуры

Сообщение ElisDN »

sda писал(а): 2018.06.09, 14:58 ElisDN, где здесь вообще слоистая архитектура.
Не ко мне вопрос, а к ТС.
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Crud генератор слоистой архитектуры

Сообщение Tommi »

В этих слоистых вещах, когда они соприкасаются с практическими задачами, вот еще такой момент мне не ясен:
В модели поиска (по сути это UI уровень) напрямую идет работа с базой, вся вот эта сборка query объекта:

Код: Выделить всё

$query = SomeModel::find()->where(...);
...
$query->andFilterWhere
Разве этим мы жестко не завязываемся на определенную структуру БД, не распыляем знание о БД по многим местам, где потом везде придется искать и менять?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Crud генератор слоистой архитектуры

Сообщение ElisDN »

Tommi писал(а): 2018.06.12, 14:02 В модели поиска (по сути это UI уровень) напрямую идет работа с базой
Это специфика упрощённой смешанной работы в Yii. В канонических слоистых вещах поиски выносятся в ReadRepository или Query/Handler.
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Crud генератор слоистой архитектуры

Сообщение Tommi »

nikitakls писал(а): 2018.06.09, 13:33 Хочу вынести на суд сообщества свой генератор слоистой архитектуры.
Так уж он и ваш. Автора зовут Никита, и это как то не сходится:
nikitakls писал(а): 2018.06.09, 13:33 С удовольствием бы послушала аргументы и советы.
Или это опечатка, почему тогда слились?
Расширение вроде в правильном направлении двигалось, похоже на архитектуры как у Дмитрия.
Сделать интерфейсы а не конкретные классы для репозитариев и сервисов, HttpException убрать из репозитория, всякое остальное - обсуждаемо, что больше надо, канонически или удобно по yii-шному оставить.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Crud генератор слоистой архитектуры

Сообщение zelenin »

Tommi писал(а): 2018.06.29, 13:47
nikitakls писал(а): 2018.06.09, 13:33 Хочу вынести на суд сообщества свой генератор слоистой архитектуры.
Так уж он и ваш. Автора зовут Никита, и это как то не сходится:
nikitakls писал(а): 2018.06.09, 13:33 С удовольствием бы послушала аргументы и советы.
Или это опечатка, почему тогда слились?
ну офигенно остроумный.
Tommi писал(а): 2018.06.29, 13:47Расширение вроде в правильном направлении двигалось, похоже на архитектуры как у Дмитрия.
именно что похоже. Это как выдавать корягу, похожую на лопату, за лопату - вроде похоже, а задачу лопаты выполнить не может. Карго-культ.
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Crud генератор слоистой архитектуры

Сообщение Tommi »

zelenin писал(а): 2018.07.05, 13:50 Это как выдавать корягу, похожую на лопату, за лопату - вроде похоже, а задачу лопаты выполнить не может. Карго-культ.
Коряги, лопаты... Ну ты прям Петросян.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Crud генератор слоистой архитектуры

Сообщение zelenin »

Tommi писал(а): 2018.07.06, 10:02
zelenin писал(а): 2018.07.05, 13:50 Это как выдавать корягу, похожую на лопату, за лопату - вроде похоже, а задачу лопаты выполнить не может. Карго-культ.
Коряги, лопаты... Ну ты прям Петросян.
больше существа, мальчик
Tommi
Сообщения: 90
Зарегистрирован: 2013.08.01, 13:44

Re: Crud генератор слоистой архитектуры

Сообщение Tommi »

zelenin писал(а): 2018.07.06, 12:14 больше существа, мальчик
Не унывай ты так, мальчик, совсем тебя, задрота, в реале смотрю забили, потому и бегаешь самоутверждаешься на форумы. Ну а куда же еще, с таким то унылым выражением как у тебя в профиле. :lol:
Последний раз редактировалось Tommi 2018.07.14, 14:17, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Crud генератор слоистой архитектуры

Сообщение zelenin »

о боже, мы стали свидетелем батла по фактам
Ответить