-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathcreatefunction.xml
More file actions
177 lines (170 loc) · 5.84 KB
/
createfunction.xml
File metadata and controls
177 lines (170 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 28930349caaaa78f908c380e44066d37a70e97b8 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<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 una función de usuario para su uso en las sentencias 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 las funciones PHP sean registradas con SQLite como
funciones definidas por el usuario, de modo que puedan ser llamadas en las consultas SQL.
La función definida puede ser utilizada en cualquier consulta SQL que permita llamadas a funciones,
por ejemplo <literal>SELECT</literal>, <literal>UPDATE</literal>, o disparadores.
</simpara>
<tip>
<simpara>
Utilizando este método, es posible reemplazar las funciones SQL nativas.
</simpara>
</tip>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>function_name</parameter></term>
<listitem>
<simpara>
El nombre de la función utilizado en las sentencias SQL.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<simpara>
La retrollamada para gestionar la función SQL definida.
</simpara>
<note>
<simpara>
La retrollamada debe retornar un tipo comprendido por SQLite (es decir,
<link linkend="language.types.intro">tipo escalar</link>).
</simpara>
</note>
<para>
Esta función debe 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>
El primer argumento pasado a la función SQL.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>values</parameter></term>
<listitem>
<para>
Los argumentos adicionales pasados a la función SQL.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>num_args</parameter></term>
<listitem>
<simpara>
El número de argumentos que la función SQL toma.
Si este parámetro es <literal>-1</literal>,
entonces la función SQL puede tomar cualquier número de argumentos.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<simpara>
Una máscara de bits de flags.
Actualmente, solo <constant>Pdo\Sqlite::DETERMINISTIC</constant> es soportado,
lo que especifica que la función retorna siempre el mismo resultado
dados los mismos valores de entrada en una sola sentencia 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>Ejemplo de <methodname>Pdo\Sqlite::createFunction</methodname></title>
<simpara>
En este ejemplo, tenemos una función que calcula la suma SHA256 de una
string, luego la invierte. Cuando la sentencia SQL es ejecutada, retorna
el valor del nombre de fichero transformado por nuestra función.
Los datos retornados en <varname>$rows</varname> contienen el resultado procesado.
</simpara>
<simpara>
La ventaja de esta técnica es que no es necesario procesar el
resultado utilizando un bucle &foreach; después de la ejecución de la 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>
</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
-->