(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_namecallbackNota: 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:
valueO primeiro argumento passado para a função SQL.
valuesArgumentos adicionais passados para a função SQL.
num_args-1,
a função SQL poderá receber qualquer número de argumentos.
flagsPdo\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();
?>