20250810-1 v1.0
This commit is contained in:
@@ -29,10 +29,46 @@
|
||||
/**
|
||||
* Конструктор.
|
||||
*
|
||||
* @param callable|null $function Метод сравнения значений.
|
||||
* @param string|array|null $function Метод сравнения значений (может быть строкой (имя функции), может быть
|
||||
* массивом (имя класса, имя метода) и null (по умолчанию)).
|
||||
*/
|
||||
public function __construct (?callable $function = null)
|
||||
public function __construct (string|array|null $function = null)
|
||||
{
|
||||
$this->Function = $function;
|
||||
// Преобразуем входные данные в замыкания
|
||||
$this->Function = $this->CreateCallback($function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает замыкание из переданного значения
|
||||
*
|
||||
* @param string|array|null $callbackData Данные для создания колбэка
|
||||
*
|
||||
* @return Closure|null
|
||||
*/
|
||||
private function CreateCallback (string|array|null $callbackData): ?Closure
|
||||
{
|
||||
// Если передан null
|
||||
if ($callbackData === null)
|
||||
// - возвращаем null
|
||||
return null;
|
||||
|
||||
// Если передана строка - считаем это именем статического метода
|
||||
if (is_string($callbackData))
|
||||
// - создаём замыкание и возращаем его
|
||||
return static fn (mixed $value1, mixed $value2): bool
|
||||
=> call_user_func($callbackData, $value1, $value2);
|
||||
|
||||
// Если передан массив [класс, метод]
|
||||
if (is_array($callbackData)) {
|
||||
// - разбираем его
|
||||
[$class, $method] = $callbackData;
|
||||
|
||||
// - создаём замыкание и возращаем его
|
||||
return static fn (mixed $value1, mixed $value2): bool
|
||||
=> call_user_func([$class, $method], $value1, $value2);
|
||||
}
|
||||
|
||||
// В случае ошибки возвращаем null
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -34,12 +34,48 @@
|
||||
/**
|
||||
* Конструктор.
|
||||
*
|
||||
* @param callable|null $fromType Метод конвертации из типа для заполнения таблицы базы данных.
|
||||
* @param callable|null $toType Метод конвертации в тип для заполнения таблицы базы данных.
|
||||
* @param string|array|null $fromType Метод конвертации из типа для заполнения таблицы базы данных (может
|
||||
* быть строкой (имя функции), может быть массивом (имя класса, имя метода) и null (по умолчанию)).
|
||||
* @param string|array|null $toType Метод конвертации в тип для заполнения таблицы базы данных (может быть
|
||||
* строкой (имя функции), может быть массивом (имя класса, имя метода) и null (по умолчанию)).
|
||||
*/
|
||||
public function __construct (?callable $fromType = null, ?callable $toType = null)
|
||||
public function __construct (string|array|null $fromType = null, string|array|null $toType = null)
|
||||
{
|
||||
$this->ConvertToDB = $fromType;
|
||||
$this->ConvertFromDB = $toType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает замыкание из переданного значения
|
||||
*
|
||||
* @param string|array|null $callbackData Данные для создания колбэка
|
||||
*
|
||||
* @return Closure|null
|
||||
*/
|
||||
private function CreateCallback (string|array|null $callbackData): ?Closure
|
||||
{
|
||||
// Если передан null
|
||||
if ($callbackData === null)
|
||||
// - возвращаем null
|
||||
return null;
|
||||
|
||||
// Если передана строка - считаем это именем статического метода
|
||||
if (is_string($callbackData))
|
||||
// - создаём замыкание и возращаем его
|
||||
return static fn (mixed $value): mixed
|
||||
=> call_user_func($callbackData, $value);
|
||||
|
||||
// Если передан массив [класс, метод]
|
||||
if (is_array($callbackData)) {
|
||||
// - разбираем его
|
||||
[$class, $method] = $callbackData;
|
||||
|
||||
// - создаём замыкание и возращаем его
|
||||
return static fn (mixed $value): mixed
|
||||
=> call_user_func([$class, $method], $value);
|
||||
}
|
||||
|
||||
// В случае ошибки возвращаем null
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user