(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0)
PDO::sqliteCreateFunction — Registra uma Função Definida pelo Usuário para uso em declarações SQL
$function_name
,$callback
,$num_args
= -1,$flags
= 0Esta função é EXPERIMENTAL. O comportamento desta função, seu nome e documentação poderão mudar sem aviso prévio em futuras versões do PHP. Use por sua conta e risco.
Este método permite registrar uma função PHP com o SQLite como uma UDF (Função Definida pelo Usuário), para que possa ser chamada a partir das declarações SQL.
A UDF pode ser usada em qualquer declaração SQL que possa chamar funções, como declarações SELECT e UPDATE e também em triggers.
function_name
O nome da função usada nas declarações SQL.
callback
Função callback para tratar a função SQL definida.
Nota: As funções callback devem retornar um tipo reconhecido pelo SQLite (ou seja, um 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
O número de argumentos que a função SQL utiliza.
Se este parâmetro for -1
, então a função SQL poderá
receber qualquer número de argumentos.
flags
Uma conjunção bit a bit de flags.
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.
Versão | Descrição |
---|---|
7.1.4 |
O parâmetro flags foi adicionado.
|
Exemplo #1 Exemplo de PDO::sqliteCreateFunction()
<?php
function md5_and_reverse($string)
{
return strrev(md5($string));
}
$db = new PDO('sqlite:sqlitedb');
$db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
?>
Neste exemplo, existe uma função que calcula a soma md5 de uma string e
depois a inverte.
Quando a instrução SQL é executada, ela retorna o valor do nome do arquivo
transformado pela função.
Os dados retornados em $rows
contêm o resultado
processado.
A beleza desta técnica é que não é necessário processar o resultado usando um laço foreach após os dados terem sido consultados.
PDO::sqliteCreateFunction e PDO::sqliteCreateAggregate podem ser usados para substituir funções SQL nativas do SQLite.