Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction Регистрирует определяемую пользователем функцию для использования в SQL-выражениях

Описание

public Pdo\Sqlite::createFunction(
    string $function_name,
    callable $callback,
    int $num_args = -1,
    int $flags = 0
): bool

Метод позволяет зарегистрировать PHP-функцию в SQLite как пользовательскую функцию, чтобы её можно было вызывать в SQL-выражениях. Определённая функция может быть использована в любом SQL-запросе, допускающем вызов функции, например SELECT, UPDATE или триггерах.

Подсказка

С помощью метода можно переопределить встроенные SQL-функции.

Список параметров

function_name
Имя функции, используемой в SQL-выражениях.
callback
Callback-функция для обработки определённой SQL-функции.

Замечание: Callback-функции должны возвращать тип, понятный SQLite (например, скалярный тип).

Сигнатура функции должна быть определена как:

callback(mixed $value, mixed ...$values): mixed
value

Первый аргумент, передаваемый SQL-функции.

values

Дополнительные аргументы, передаваемые SQL-функции.

num_args
Количество аргументов, которые принимает SQL-функция. Если параметр равен -1, то SQL-функция может принимать любое количество аргументов.
flags
Битовая маска флагов. В настоящее время поддерживается только флаг Pdo\Sqlite::DETERMINISTIC, который указывает, что функция всегда возвращает один и тот же результат при одинаковых входных данных в рамках одного SQL-выражения.

Возвращаемые значения

Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.

Примеры

Пример #1 Пример использования метода Pdo\Sqlite::createFunction()

В этом примере функция вычисляет сумму SHA256 строки, а затем меняет её на противоположную. При выполнении SQL-выражения она возвращает значение имени файла, преобразованного функцией. Данные, возвращаемые в переменную $rows, содержат обработанный результат.

Прелесть техники в том, что после выполнения запроса не нужно обрабатывать результат с помощью цикла foreach.

<?php
function sha256_and_reverse($string)
{
return
strrev(hash('sha256', $string));
}

$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->sqliteCreateFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();
?>

Смотрите также

  • Pdo\Sqlite::createAggregate() - Регистрирует агрегирующую пользовательскую функцию для использования в SQL-выражениях
  • Pdo\Sqlite::createCollation() - Регистрирует определяемую пользователем функцию для использования в качестве функции сопоставления в SQL-выражениях
  • sqlite_create_function()
  • sqlite_create_aggregate()
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top