Files
archived-doc-pt-br/reference/pdo_sqlite/pdo/sqlite/createfunction.xml
Leonardo Lara Rodrigues fc1331484b sync with en rev
2026-03-04 16:49:05 -03:00

184 lines
5.9 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: 28930349caaaa78f908c380e44066d37a70e97b8 Maintainer: leonardolara Status: ready --><!-- CREDITS: leonardolara -->
<refentry xml:id="pdo-sqlite.createfunction" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Pdo\Sqlite::createFunction</refname>
<refpurpose>
Registra uma função definida pelo usuário para uso em instruções SQL
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="Pdo\\Sqlite">
<modifier>public</modifier> <type>bool</type><methodname>Pdo\Sqlite::createFunction</methodname>
<methodparam><type>string</type><parameter>function_name</parameter></methodparam>
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>num_args</parameter><initializer>-1</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<simpara>
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 <literal>SELECT</literal>, <literal>UPDATE</literal> ou gatilhos.
</simpara>
<tip>
<simpara>
Usando este método é possível substituir funções SQL nativas.
</simpara>
</tip>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>function_name</parameter></term>
<listitem>
<simpara>
O nome da função usada nas instruções SQL.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<simpara>
Função de retorno de chamada para lidar com a função SQL definida.
</simpara>
<note>
<simpara>
As funções de retorno de chamada devem retornar um tipo compreendido pelo SQLite (ou seja,
<link linkend="language.types.intro">tipo escalar</link>).
</simpara>
</note>
<para>
Esta função precisa ser definida como:
<methodsynopsis>
<type>mixed</type><methodname><replaceable>callback</replaceable></methodname>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
<methodparam rep="repeat"><type>mixed</type><parameter>values</parameter></methodparam>
</methodsynopsis>
<variablelist>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
O primeiro argumento passado para a função SQL.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>values</parameter></term>
<listitem>
<para>
Argumentos adicionais passados para a função SQL.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>num_args</parameter></term>
<listitem>
<simpara>
O número de argumentos que a função SQL utiliza.
Se este parâmetro for <literal>-1</literal>,
a função SQL poderá receber qualquer número de argumentos.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<simpara>
Uma máscara de bits de opções.
Atualmente, apenas <constant>Pdo\Sqlite::DETERMINISTIC</constant> é suportada,
o que especifica que a função sempre retorna o mesmo resultado dadas
as mesmas entradas em uma única instrução SQL.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
&return.success;
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="pdo-sqlite.createfunction.example.basic">
<title>Exemplo de <methodname>Pdo\Sqlite::createFunction</methodname></title>
<simpara>
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 <varname>$rows</varname> contêm o resultado processado.
</simpara>
<simpara>
A beleza desta técnica é que não há necessidade de processar
o resultado usando um laço &foreach; após a consulta.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
function sha256_and_reverse($string)
{
return strrev(hash('sha256', $string));
}
$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->createFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();
?>
]]>
</programlisting>
<!-- TODO
&example.outputs;
<screen>
<![CDATA[
Code example
]]>
</screen>
-->
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><methodname>Pdo\Sqlite::createAggregate</methodname></member>
<member><methodname>Pdo\Sqlite::createCollation</methodname></member>
<member><function>sqlite_create_function</function></member>
<member><function>sqlite_create_aggregate</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->