Pdo\Sqlite::createFunction Регистрирует пользовательскую функцию для вызова в SQL-инструкциях &reftitle.description; public boolPdo\Sqlite::createFunction stringfunction_name callablecallback intnum_args-1 intflags0 Метод регистрирует пользовательскую PHP-функцию в SQLite для вызова в SQL-инструкциях. Пользовательскую функцию вызывают в триггерах или SQL-запросах наподобие SELECT, UPDATE или других предложениях с поддержкой вызова функций. При совпадении названий метод переопределит встроенную SQL-функцию. &reftitle.parameters; function_name Название функции, которое указывается в SQL-инструкции. callback Callback-функция для обработки пользовательской SQL-функции. SQLite поддерживает только значения скалярных типов, поэтому возврат из callback-функций значений других типов вызовет ошибку. Корректная сигнатура функции обратного вызова: mixedcallback mixedvalue mixedvalues value Первый аргумент SQL-функции. values Дополнительные аргументы SQL-функции. num_args Количество аргументов, которое принимает SQL-функция. При установке значения -1 SQL-функция примет произвольное количество аргументов. flags Битовая маска флагов. Метод пока поддерживает только флаг Pdo\Sqlite::DETERMINISTIC, который указывает, что функция возвращает один и тот же результат при одинаковых входных данных в рамках одной SQL-инструкции. &reftitle.returnvalues; &return.success; &reftitle.examples; Пример регистрации пользовательской SQL-функции методом <methodname>Pdo\Sqlite::createFunction</methodname> В примере функция вычисляет дайджест строки по алгоритму SHA256, а затем инвертирует хеш. При выполнении SQL-инструкции БД возвращает результат, в котором пользовательская функция преобразовала каждое название файла. Данные, которые возвращаются в переменной $rows, содержат результат обработки. Преимущество подхода состоит в автоматической обработке запроса пользовательской функцией вместо постобработки результата в цикле &foreach;. createFunction('sha256rev', 'sha256_and_reverse', 1); $rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll(); ]]> &reftitle.seealso; Pdo\Sqlite::createAggregate Pdo\Sqlite::createCollation sqlite_create_function sqlite_create_aggregate