За последние 24 часа нас посетили 21966 программистов и 1004 робота. Сейчас ищут 711 программистов ...

Гибкие правила валидации набора данных

Тема в разделе "Решения, алгоритмы", создана пользователем mrDDosT, 17 июл 2018.

  1. mrDDosT

    mrDDosT Новичок

    С нами с:
    17 июл 2018
    Сообщения:
    2
    Симпатии:
    0
    Ребята, всем привет, может кто в курсе, есть ли какой-либо стандарт или библиотека на php (или другом языке), которая бы позволяла писать гибкие проверки соответствия набора данных некоторому условию? Например, есть массив:

    $collection = [[‘a’ => ‘1’], [‘a’ => 1], [‘a’ => 2]];

    пишем примерно такое условие:

    $condition = "{{[{collection.group(‘a’)}].each()}.or()}.count()>1 || collection.count()>5";

    которое будет означать: возьми коллекцию, сгруппируй ее по значениям элементов с ключом ‘a’, затем пройдись по каждому сгруппированому массиву (соединяя условия проверки по ИЛИ) и проверь количество массивов внутри каждого сгруппированого массива, если хотя бы по одному кол-во оказалось больше 1 или количество элементов в первоначальном массиве больше 5, то набор данных удовлетворяет условию.

    И выполняем проверку if ($checker->satisfies($condition, $collection)) {}

    В некоторых продуктах видел подобные правила, но не знаю это реализация какого-то стандарта или самопал.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    в чем гибкость? Создании своего псевдо-языка для написания условий?
    нужно тогда будет описать все возможные варианты синтаксиса языка, потом как то разбирать парсить, обрабатывать итд
    P.S. Если коллекция берется из БД - тогда можно и нужно применять SQL ))))
     
  3. mrDDosT

    mrDDosT Новичок

    С нами с:
    17 июл 2018
    Сообщения:
    2
    Симпатии:
    0
    Нет, о создании такого псевдо-языка речь не идет, вопрос в том, что может уже что-то подобное создано, т.к. видел в настройках некоторых продуктов очень похожие вещи, поэтому стало интересно может есть какой-либо стандарт или библиотека. А гибкость в том, что приходит набор данных (не из бд), и в зависимости от вида этого набора необходимо применять разные алгоритмы обработки, причем видов довольно много и писать кучу циклов и if'ов, чтобы понять какой алгоритм обработки применить, несколько неудобно, гораздо удобнее было бы описать несколько условий и сопоставить им методы обработки. Задач подобного рода возникает по ходу работы не мало.
     
  4. ivan_kip

    ivan_kip Новичок

    С нами с:
    27 июл 2018
    Сообщения:
    1
    Симпатии:
    0
    Конкретно для валидации данных есть библиотеки https://github.com/RunnMe/Validation например. Что с ней делать дальше разберетесь сами. В фреймворке T4 (https://github.com/pr-of-it/t4) того же разработчика было нечто подобное.