This package is abandoned and no longer maintained. No replacement package was suggested.

The package provides objects and an interface for build match conditions.

0.1.1 2022-08-23 23:20 UTC

This package is not auto-updated.

Last update: 2023-03-29 06:37:19 UTC


README

Latest Stable Version PHPUnit PHPStan-lvl9 PHP Version Require License

  • The documentation is written in two languages: Russian and English.
  • Документация написана на двух языках: русском и английском.

General description / Общее описание

RUS:

Пакет предоставляет объекты и интерфейс для выражения условий поиска (описывают услоние выборки записей из хранилища). Для быстрого построения используется билдер Fit (например Fit::field('name')->val('=', 'John'))

Requirements / Требования

  • PHP >= 7.4
  • Composer >=2.0

Installation / Установка

composer require "mnemesong/fit"

Conditions / Условия

RUS:

Выразитель условий поиска Fit позволяет быстро выражать любые условия поиска различных типов.

Field with array comparing fits / Сравнение значений поля таблицы с массивом

ENG:

They have the general form: Fit::field(string <column name>) ->arr(string <comparison operator>, array <comparison array>)

Allowed operators for array comparison:
  • "in" - checks whether the value in the column is included in the comparison array
  • "!in" - checks if the value in the column is not included in the comparison array
Example:

Fit::field("age")->arr("in", [11, 22, 33, 44, 55])

RUS:

Имеют общий вид: Fit::field(string <имя колонки>)->arr(string <оператор сравнения>, array <массив сравнения>)

Допустимые операторы для сравнения с массивом:
  • "in" - проверяет вхождение значения в колонке в массив сравнения
  • "!in" - проверяет отсутствие вхождения значения в колонке в массив сравнения
Пример:

Fit::field("age")->arr("in", [11, 22, 33, 44, 55])

Fields comparing fits / Сравнение колонок таблицы

ENG:

They have a general form: Fit::field(string <column name>)->field(string <comparison operator>, string <column name>)

Allowed operators for comparing table columns:
  • "=" - checks the equality of values in two columns of the same table row
  • "!=" - checks the inequality of values in two columns of the same table row
  • ">", "!>", ">=", "<", "!<", "<=" - compare values in two columns of one table row

Additionally, you can specify the comparison method:

  • ->asStr() - character-by-character comparison from left to right - the default comparison method.
  • ->asNum() - Attempt to cast to numbers and compare as numbers.
Example:

Fit::field("index")->field(">", "index")->asNum()

RUS:

Имеют общий вид: Fit::field(string <имя колонки>)->field(string <оператор сревнения>, string <имя колонки>)

Допустимые операторы для сравнения колонок таблицы:
  • "=" - проверяет равенство значений в двух колонках одной строки таблицы
  • "!=" - проверяет неравенство значений в двух колонках одной строки таблицы
  • ">", "!>", ">=", "<", "!<", "<=" - сравнивают значений в двух колонках одной строки таблицы

Дополнительно можно указать способ сравнения:

  • ->asStr() - посимвольное сравнение с лево направо - способ сравнения по умолчанию.
  • ->asNum() - Попытка приведения к числам и сравнения как чисел.
Пример:

Fit::field("index")->field(">", "index")->asNum()

Field with scalar val comparing / Сравнение поля cо скалярным значением

ENG:

They have the general form: Fit::field(string <column name>)->val(string <comparison operator>, string <string value>)

Allowed operators to compare against a scalar value:
  • "=" - checks for equality (NULL-safe) of the column value with the specified string value
  • "!=" - checks if the (NULL-safe) value of the column with the specified string value is not equal
  • ">", "!>", ">=", "<", "!<", "<=" - compares the values of the column with the specified value

Additionally, you can specify the comparison method:

  • ->asStr() - character-by-character comparison from left to right - the default comparison method.
  • ->asNum() - Attempt to cast to numbers and compare as numbers.
Example:

Fit::field("bank-account")->val("!<", "71239-318941")->asStr()

RUS:

Имеют общий вид: Fit::field(string <имя колонки>)->val(string <оператор сравнения>, string <строковое значение>)

Допустимые операторы для сравнения cо скалярным значением:
  • "=" - проверяет равенство (NULL-безопасное) значения колонке с указанным строковым значением
  • "!=" - проверяет неравенство (NULL-безопасное) значения колонке с указанным строковым значением
  • ">", "!>", ">=", "<", "!<", "<=" - сравнивает значения колонке с указанным значением

Дополнительно можно указать способ сравнения:

  • ->asStr() - посимвольное сравнение с лево направо - способ сравнения по умолчанию.
  • ->asNum() - Попытка приведения к числам и сравнения как чисел.
Пример:

Fit::field("bank-account")->val("!<", "71239-318941")->asStr()

Unary fits / Унарные сравнения

ENG:

They have the general form: Fit::field(string <column name>)->is(string <comparison operator>)

Allowed operators for unary comparison:
  • "null" - checks if column value is NULL
  • "!null" - checks if column value is null
Example:

Fit::field("bank-account")->is("!null")

RUS:

Имеют общий вид: Fit::field(string <имя колонки>)->is(string <оператор сравнения>)

Допустимые операторы для унарного сравнения:
  • "null" - проверяет равенство значения колонки NULL
  • "!null" - проверяет неравенство значения колонки NULL
Пример:

Fit::field("bank-account")->is("!null")

Complexity composite fits / Сложные составные условия поиска

ENG:

Methods: Fit::andThat(), Fit::orThat() help to compose complex logical compositions from search terms

Example:

Fit::andThat([
    Fit::field("bank-account")->val("!<", "71239-318941")->asStr(),
    Fit::field("name")->is("null")
])

RUS:

Методы: Fit::andThat(), Fit::orThat() помогают составлять сложные логические композиции из условий поиска

Пример:

Fit::andThat([
    Fit::field("bank-account")->val("!<", "71239-318941")->asStr(),
    Fit::field("name")->is("null")
])

Unary composite fits / Унарные составные условия поиска

ENG:

Currently, this class represents the only negation (NULL-safe) search condition: Fit::notThat()

Example:

Fit::notThat(Fit::field("bank-account")->val("!<", "71239-318941")->asStr())

RUS:

В настоящий момент этот класс представляет единственная условие поиска отрицания (NULL-безопасного): Fit::notThat()

Пример:

Fit::notThat(Fit::field("bank-account")->val("!<", "71239-318941")->asStr())

Converting Structures to fit conditions / Преобразование структур в условия

ENG

The Fit::struct() method allows you to turn Structures into search conditions. This is useful when you need to check in some storage, the presence of records in many respects similar to a specific structure.

Example

$struct = new Structure(['name' => 'Victoria', 'age' => 21]);
$spec = Fit::struct($struct);

The result will be equivalent to the following code:

$spec = Fit::andThat([
    Fit::field('name')->val('=','Victoria')->asStr(),
    Fit::field('age')->val('=','21')->asStr(),
]);

RUS

Метод Fit::struct() позволяет превращать Структуры в условия поиска. Это полезно когда нужно проверить в каком-то хранилище наличие записей по многим параметрам похожих на конкретную структуру.

Пример

$struct = new Structure(['name' => 'Victoria', 'age' => 21]);
$spec = Fit::struct($struct);

Результат будет эквивалентен следующему коду:

$spec = Fit::andThat([
    Fit::field('name')->val('=','Victoria')->asStr(),
    Fit::field('age')->val('=','21')->asStr(),
]);

License / Лицензия

- MIT

Contacts / Контакты

- Anatoly Starodubtsev "Pantagruel74" - tostar74@mail.ru