Konstantin
та да
Olga
>у нас 300-400 моделей 0_o
Vladislav
Говорю, попробуй через сторонний класс подключать поведение
Vladislav
А в этом классе помнить, к кому подклбчал
Olga
что это за модели интересно?
Olga
так много сущностей?
Konstantin
наверняка они тоже ненавидят наследование :)
Ivan
Konstantin
а то была бы структура, где эти 300 моделей наследуются от десятка базовых, и в этих базовых можно было бы все и сделать
Павел
Konstantin
если есть наследование, может прикрутить это к базовым классам?
Konstantin
тогда не придется перечислять 300 классов явно
Konstantin
да, про автоматизацию
Konstantin
https://xkcd.com/1205/
Konstantin
золотые слова
Konstantin
если надо раз в неделю добавить пять классов в список и это занимает 30 секунд, то за пять лет будет сэкономлено 21 минуту ценного программистского времени
Vladislav
К базовому нельзя, ибо надо по отдельности же
Vladislav
@bfcmyxa, попробуй какой-нибудь хелпер класс, которому ты будешь отдавать класс
Vladislav
А он цеплять поведение
Vladislav
И записывать в базу
Vladislav
Или еще куда
Ivan
это слишком идеальный случай. на деле получается, что кто-то забыл добавить класс, это упускается из виду и выходит в прод.
от юзеров поступает баг-репорт, которые его пишут, это читает манагер, планирует программистам, они добавляют класс.
юзеры в это время сидят без функционала. все недовольны :)
Vladislav
И поведение это цеплять только и только так
Vladislav
Конечно, никто не запретит программисту подключить напрямую, но это уже человеческий фактор
Vladislav
Самое прямое и простое
Vladislav
Как часто будет это использоваться?
Vladislav
Опрос моделей
Olga
Vladislav
Там 300 классов и чувак готов перебирать из все)
Vladislav
А ты про тесты
Ivan
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
нужна логика - создаешь интферйес общения и через него пускаешь данные
Olga
что имеется в виду под "мапинг надо будет обновить, а это дело полетит"?
вы хотите унифицированную операцию, что обновления маппинга, т.к. боитесь забыть какой-то класс добавить.
но а если ошибка случится из-за перебора (стопудов не случится, не работает в программировании).
притестировании (да хоть ручном) команды, вам все равно нужно проверять, что произойдет - всели хорошо работает: (мапинг не упал) и самое главное, ВСЁ ли, что вы хотели обновилось
Olga
Olga
модели скорее всего разделены каким-то скоупом. (модулем, неймспейсом) ходить по дирректории или вообще как-то низкоуровнево выбирать все модели не получистя нормально и быстро (по разработке)
Dmitriy
модель != таблица
как раз он вроде имеет модель в yii2 активрекорд. даже если не таблица.. 300 это ни о чем
mr.
Dmytro 🇺🇦
Решил делать разруливание robots.txt через контроллер. на сервере сделаю редирект, а там уже буду строить свой лунопарк
Dmytro 🇺🇦
честно, хз как в данной ситуации через url manager разрулить.
Dmitriy
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 минут и реализация готова)