PHP 8.5.0 Alpha 2 available for testing

Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction Registra una función de usuario para su uso en las sentencias SQL

Descripción

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

Este método permite que las funciones PHP sean registradas con SQLite como funciones definidas por el usuario, de modo que puedan ser llamadas en las consultas SQL. La función definida puede ser utilizada en cualquier consulta SQL que permita llamadas a funciones, por ejemplo SELECT, UPDATE, o disparadores.

Sugerencia

Utilizando este método, es posible reemplazar las funciones SQL nativas.

Parámetros

function_name
El nombre de la función utilizado en las sentencias SQL.
callback
La retrollamada para gestionar la función SQL definida.

Nota: La retrollamada debe retornar un tipo comprendido por SQLite (es decir, tipo escalar).

Esta función debe ser definida como:

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

El primer argumento pasado a la función SQL.

values

Los argumentos adicionales pasados a la función SQL.

num_args
El número de argumentos que la función SQL toma. Si este parámetro es -1, entonces la función SQL puede tomar cualquier número de argumentos.
flags
Una máscara de bits de flags. Actualmente, solo Pdo\Sqlite::DETERMINISTIC es soportado, lo que especifica que la función retorna siempre el mismo resultado dados los mismos valores de entrada en una sola sentencia SQL.

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Ejemplos

Ejemplo #1 Ejemplo de Pdo\Sqlite::createFunction()

En este ejemplo, tenemos una función que calcula la suma SHA256 de una string, luego la invierte. Cuando la sentencia SQL es ejecutada, retorna el valor del nombre de fichero transformado por nuestra función. Los datos retornados en $rows contienen el resultado procesado.

La ventaja de esta técnica es que no es necesario procesar el resultado utilizando un bucle foreach después de la ejecución de la consulta.

<?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();
?>

Ver también

  • Pdo\Sqlite::createAggregate() - Registra una función de agregación definida por el usuario para su uso en instrucciones SQL
  • Pdo\Sqlite::createCollation() - Registra una función de usuario de ordenación para su uso en las sentencias SQL
  • sqlite_create_function()
  • sqlite_create_aggregate()
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top