(PHP 8 >= 8.4.0)
Pdo\Sqlite::createFunction — Registra uma função definida pelo usuário para uso em instruções SQL
$function_name
,$callback
,$num_args
= -1,$flags
= 0
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.
Usando este método é possível substituir funções SQL nativas.
function_name
callback
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:
value
O primeiro argumento passado para a função SQL.
values
Argumentos adicionais passados para a função SQL.
num_args
-1
,
a função SQL poderá receber qualquer número de argumentos.
flags
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.
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();
?>