Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction Registra uma função definida pelo usuário para uso em instruções SQL

Descrição

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

Este método permite que a função PHP seja registrada no SQLite como uma função definida pelo usuário, para que possa ser chamada em consultas SQL. A função definida pode ser usada em qualquer consulta SQL que permita chamadas de função, por exemplo SELECT, UPDATE ou gatilhos.

Dica

Usando este método é possível substituir funções SQL nativas.

Parâmetros

function_name
O nome da função usada nas instruções SQL.
callback
Função de retorno de chamada para lidar com a função SQL definida.

Nota: As funções de retorno de chamada devem retornar um tipo compreendido pelo SQLite (ou seja, tipo escalar).

Esta função precisa ser definida como:

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

O primeiro argumento passado para a função SQL.

values

Argumentos adicionais passados ​​para a função SQL.

num_args
O número de argumentos que a função SQL utiliza. Se este parâmetro for -1, a função SQL poderá receber qualquer número de argumentos.
flags
Uma máscara de bits de opções. Atualmente, apenas Pdo\Sqlite::DETERMINISTIC é suportada, o que especifica que a função sempre retorna o mesmo resultado dadas as mesmas entradas em uma única instrução SQL.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Exemplos

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

Neste exemplo, temos uma função que calcula a soma SHA256 de uma string e depois a inverte. Quando a instrução SQL é executada, ela retorna o valor do nome do arquivo transformado pela nossa função. Os dados retornados em $rows contêm o resultado processado.

A beleza desta técnica é que não há necessidade de processar o resultado usando um laço foreach após a 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();
?>

Veja Também

  • Pdo\Sqlite::createAggregate() - Registra uma função de agregação definida pelo usuário para uso em instruções SQL
  • Pdo\Sqlite::createCollation() - Registra uma função definida pelo usuário para uso como função de agrupamento em instruções SQL
  • sqlite_create_function()
  • sqlite_create_aggregate()
adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top