Konstantin
та да
Olga
>у нас 300-400 моделей 0_o
Vladislav
Говорю, попробуй через сторонний класс подключать поведение
Vladislav
А в этом классе помнить, к кому подклбчал
Olga
что это за модели интересно?
Olga
так много сущностей?
Konstantin
наверняка они тоже ненавидят наследование :)
Konstantin
а то была бы структура, где эти 300 моделей наследуются от десятка базовых, и в этих базовых можно было бы все и сделать
Павел
Ivan
наверняка они тоже ненавидят наследование :)
все хорошо с наследованием, большой бизнес :)
Konstantin
если есть наследование, может прикрутить это к базовым классам?
Konstantin
тогда не придется перечислять 300 классов явно
Konstantin
да, про автоматизацию
Konstantin
https://xkcd.com/1205/
Konstantin
золотые слова
Konstantin
если надо раз в неделю добавить пять классов в список и это занимает 30 секунд, то за пять лет будет сэкономлено 21 минуту ценного программистского времени
Vladislav
К базовому нельзя, ибо надо по отдельности же
Vladislav
@bfcmyxa, попробуй какой-нибудь хелпер класс, которому ты будешь отдавать класс
Vladislav
А он цеплять поведение
Vladislav
И записывать в базу
Vladislav
Или еще куда
Ivan
это слишком идеальный случай. на деле получается, что кто-то забыл добавить класс, это упускается из виду и выходит в прод. от юзеров поступает баг-репорт, которые его пишут, это читает манагер, планирует программистам, они добавляют класс. юзеры в это время сидят без функционала. все недовольны :)
Vladislav
И поведение это цеплять только и только так
Ivan
@bfcmyxa, попробуй какой-нибудь хелпер класс, которому ты будешь отдавать класс
я думаю буду итерировать модели и проверять есть у них нужное поведение, пока выглядит как самое простое решение
Vladislav
Конечно, никто не запретит программисту подключить напрямую, но это уже человеческий фактор
Vladislav
Самое прямое и простое
Vladislav
Как часто будет это использоваться?
Vladislav
Опрос моделей
Vladislav
Там 300 классов и чувак готов перебирать из все)
Vladislav
А ты про тесты
Ivan
т.е. тестировать вы не будете?)) а если мапинг надо будет обновить, а это дело полетит?
что имеется в виду под "мапинг надо будет обновить, а это дело полетит"?
Dmitriy
>у нас 300-400 моделей 0_o
типичный интерпрайз . 300 таблиц не так и много
Ivan
типичный интерпрайз . 300 таблиц не так и много
Именно, а это у нас еще логистика и производство не построены :)
who are you
Как объединяют чат на ноджиэс и сайт на yii2 ?
who are you
Через базу общую?
Vladislav
через интферфейсы можно
who are you
Vladislav
на уии или ноде создаешь апи
Vladislav
а можно и там и там
Vladislav
и общаются два сервера друг с другом через http
Vladislav
но если тебе надо тупо данные из базы гонять
Vladislav
то используй общую базу
who are you
но если тебе надо тупо данные из базы гонять
Я в Том и дело что не пробовал ещё
who are you
Лучшую практику спрашиваю)
Vladislav
зависит от задачи
Vladislav
нужны только данные - база
Vladislav
нужна логика - создаешь интферйес общения и через него пускаешь данные
who are you
зависит от задачи
Чат вебсокетный встроить в сайт
Olga
что имеется в виду под "мапинг надо будет обновить, а это дело полетит"?
вы хотите унифицированную операцию, что обновления маппинга, т.к. боитесь забыть какой-то класс добавить. но а если ошибка случится из-за перебора (стопудов не случится, не работает в программировании). притестировании (да хоть ручном) команды, вам все равно нужно проверять, что произойдет - всели хорошо работает: (мапинг не упал) и самое главное, ВСЁ ли, что вы хотели обновилось
Olga
модели скорее всего разделены каким-то скоупом. (модулем, неймспейсом) ходить по дирректории или вообще как-то низкоуровнево выбирать все модели не получистя нормально и быстро (по разработке)
Dmitriy
модель != таблица
как раз он вроде имеет модель в yii2 активрекорд. даже если не таблица.. 300 это ни о чем
Olga
как раз он вроде имеет модель в yii2 активрекорд. даже если не таблица.. 300 это ни о чем
ну я понимаю, что это реально. но они не должны быть в одном скоупе. как-то массово проходиться по всем моделям - это будет чет запарно. ну и странно
Dmytro 🇺🇦
Решил делать разруливание robots.txt через контроллер. на сервере сделаю редирект, а там уже буду строить свой лунопарк
Dmytro 🇺🇦
честно, хз как в данной ситуации через url manager разрулить.
Vladislav
у него не уии2
Vladislav
там первая версия
Vladislav
и да @bfcmyxa http://beh.look-forward.ru/index.php?r=site%2Findex
Vladislav
чет накидал быстренько в nano
Vladislav
<?php namespace app\helpers; use Yii; class BehHelper { static function attach($object) { $object->attachBehavior('timestampBehavior', \yii\behaviors\TimestampBehavior::className()); $list = []; if (Yii::$app->cache->exists('classes')) { $list = Yii::$app->cache->get('classes'); } Yii::$app->cache->set('classes', array_unique(array_merge($list, [get_class($object)]))); } static function getClasses() { return Yii::$app->cache->get('classes'); } }
Vladislav
типа класс хелпера
Vladislav
правда кеш не чистится при запуске
Vladislav
но это в бутстрап можно сунуть
Vladislav
использвать в моделях так public function init() { parent::init(); \app\helpers\BehHelper::attach($this); }
Vladislav
\app\helpers\BehHelper::getClasses()
Vladislav
вернет массив классов, которые используют поведение
Vladislav
это явно чище, чем все перебирать
Vladislav
можно подкрутить метода attach для любых поведений
Vladislav
и в принцпие красиво его написать, а не быдлокодом
Vladislav
но я примера ради
Rustembek
Vladislav
там сейчас выводятся вар дампом BehHelper::getClasses
Vladislav
и User::getBehaviors
Vladislav
как-то так
Павел
Будет работать не для всех моделей, а только для тех что созданы
Vladislav
30 минут и реализация готова)