PDO::sqliteCreateFunction
(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
Descrição
string
$function_name
,callable
$callback
,int
$num_args
= -1,int
$flags
= 0): bool
Esta 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.
Parâmetros
function_name
-
O nome da função usada nas declarações SQL.
callback
-
Função de retorno para tratar a função SQL definida.
Note: A função de retorno deve 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.
Registro de Alterações
Versão | Descrição |
---|---|
7.1.4 |
O parâmetro flags foi adicionado.
|
Exemplos
Example #1 Exemplo de PDO::sqliteCreateFunction()
<?php
function md5_and_reverse($string)
{
return strrev(hash('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 elegância desta técnica é que não existe necessidade de 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.