Anonymous
чуваки, а можно ли валидировать само регулярное выражение? что оно действительно является законченным итд
Anonymous
через Assert
Юра
Просто попробуй его использовать и если нетц ошибки значит норм
Anonymous
а нельзя
Anonymous
надо чтобы он был валидным
Юра
Ну а как ты хочешь еще провалидировать регулярное выражение?
Anonymous
ну как-то блять все эти сайты это делают?
Юра
Какие сайты
Anonymous
да всякие. для валидации регулярных выражений
Юра
$ok = @preg_match('/asd++?/', 'as');
if ($ok === false) { echo error_get_last()['message']; } else { echo 'OK'; }
Юра
preg_match(): Compilation failed: nothing to repeat at offset 5
Юра
вот можешь выдернуть отсюда офсет
Юра
Только симфа может кинуть исключительние
Юра
У нее свой хендлер ошибок
Юра
Может быть все сложнее
Юра
Мож надо будет завернуть в трай кетч
Anonymous
Юра
Я не пойму тебе надо валидирлвать само регулярное выражение или что-то с помощью регулярного выражения
Anonymous
Юра
Ну так напиши свой вадидатор и используй код выше
Юра
Как написать саой валидатор есть в доке симфы
Юра
Ткм надо создать два класса
Юра
Аннотацию и сам валидатор
Anonymous
а нафига
Anonymous
^((?:(?:[^?+*{}()[\]\\|]+|\\.|\[(?:\^?\\.|\^[^\\]|[^\\^])(?:[^\]\\]+|\\.)*\]|\((?:\?[:=!]|\?<[=!]|\?>)?(?1)??\)|\(\?(?:R|[+-]?\d+)\))(?:(?:[?+*]|\{\d+(?:,\d*)?\})[?+]?)?|\|)*)$
Юра
Ну да зачем идти по простому пути )
Anonymous
ну надо ассерт использовать
Anonymous
значит ассерт
Сергей
Валидация регулярки с помощью регулярки. Надо не забыть провалидировать этот валидатор ... Может быть этим же валидатором
Anonymous
Anonymous
Но я уже сломался и сделал пока что прегматч
Maxim Kainov
Maxim Kainov
Anonymous
Андрей
Юра
Поэтому это тупиковый подход
Юра
Код наверное для примера
Юра
Оно уже.на тысячах энтитей тупит ужасно
Юра
Да и вообще ОРМ и высокая нагрузка несовместимые вещи
Юра
Все это будет дергаться каждый раз на каждый запрос
Сергей
Ага. У меня сейчас просто аналогичная вещь. Но там в отдельном хендлере эта логика реализована. И проверки там всякие есть, но чтобы их осуществить надо в базу лазить..
Так понимаю, что подход Д.Елисеева тут будет плохо применим
Anonymous
Юра
По идее ты можешь фильтровать коллекции
Юра
https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/working-with-associations.html#filtering-collections
Юра
А некоторые методы доступны вообщем без загрузки коллекции. Читай про extra lazy collections
Сергей
неправда
Сергей
путаете с методом filter у коллекции
Сергей
через критерию - выполняется имеено запрос
Сергей
ну вот метод matching у ArrayCollection:
public function matching(Criteria $criteria)
{
$expr = $criteria->getWhereExpression();
$filtered = $this->elements;
if ($expr) {
$visitor = new ClosureExpressionVisitor();
$filter = $visitor->dispatch($expr);
$filtered = array_filter($filtered, $filter);
}
$orderings = $criteria->getOrderings();
if ($orderings) {
$next = null;
foreach (array_reverse($orderings) as $field => $ordering) {
$next = ClosureExpressionVisitor::sortByField($field, $ordering === Criteria::DESC ? -1 : 1, $next);
}
uasort($filtered, $next);
}
$offset = $criteria->getFirstResult();
$length = $criteria->getMaxResults();
if ($offset || $length) {
$filtered = array_slice($filtered, (int) $offset, $length);
}
return $this->createFrom($filtered);
}
Сергей
ключевое тут - $filtered = array_slice($filtered, (int) $offset, $length);
Сергей
а хотя там наверное $visitor->dispatch($expr); запрос к базе делает
Сергей
хотя нет . ClosureExpressionVisitor условия для фильтрации именно коллекции применяет
Сергей
даже документации не верим?
Сергей
Надо смотреть PersistentCollection
Сергей
спасибо. Точно
Юра
Так что можно написать в модели геттер который вернет отфильтрованную в БД коллекцию
Юра
Я хз можно ли в неё добавить элементы или удалить
Юра
Не проверял
Maxim Kainov
Юра
Хз говорю
Юра
Может можно добавить в отфильтрованную
Maxim Kainov
Maxim Kainov
https://habr.com/ru/company/jugru/blog/503868/
Юра
Правда тогда коллекция становится неаалидной ибо в ней могут появиться элементы которые не попадают под критерии
Юра
Вообщем надо проверять
Юра
Доктрина трекает ссылки ей пофигу га коллекции
Юра
Главное чтобы овнинг сайд был обновлен
Юра
Хотя мож я несу пургу
Юра
)
Юра
Доктрина короче загадочная
Anonymous
Maxim Kainov
Maxim Kainov
Где объясняли
Ilya 🃏
Привет, погружаюсь тут в queryBuilder и нигде не могу найти, можно ли так делать?