-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathextract.xml
261 lines (257 loc) · 9.13 KB
/
extract.xml
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4a7ddddc27271967b616ad3400cfbe2a9b48212b Maintainer: pastore Status: ready -->
<!-- CREDITS: cucinato -->
<refentry xml:id="function.extract" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>extract</refname>
<refpurpose>Importa le variabili nella tabella dei simboli corrente da un array</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>extract</methodname>
<methodparam><type>array</type><parameter role="reference">array</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer><constant>EXTR_OVERWRITE</constant></initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>prefix</parameter><initializer>""</initializer></methodparam>
</methodsynopsis>
<para>
Importa le variabili nella tabella dei simboli corrente da un array.
</para>
<para>
Controlla ogni chiave per vedere se ha un nome di variabile valido.
Controlla anche le collisioni con le variabili esistenti nella
tabella dei simboli.
</para>
<warning>
<para>
Non usare <function>extract</function> su dati non attendibili, come l'input dell'utente
(per esempio <varname>$_GET</varname>, <varname>$_FILES</varname>).
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>array</parameter></term>
<listitem>
<para>
Un array associativo. Questa funzione tratta le chiavi come nomi di variabili e
i valori come valori di variabili. Per ogni coppia chiave/valore verrà creata una
variabile nella tabella dei simboli corrente, soggetta ai
parametri <parameter>flags</parameter> e <parameter>prefix</parameter>.
</para>
<para>
È necessario utilizzare un array associativo; un array indicizzato numericamente
non produrrà risultati a meno che non si utilizzi <constant>EXTR_PREFIX_ALL</constant> o
<constant>EXTR_PREFIX_INVALID</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
Il modo in cui vengono trattate le chiavi non valide/numeriche e le collisioni è determinato
dai <parameter>flag</parameter> di estrazione. Può essere uno dei
seguenti valori:
<variablelist>
<varlistentry>
<term><constant>EXTR_OVERWRITE</constant></term>
<listitem>
<simpara>
In caso di collisione, sovrascrivi la variabile esistente.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_SKIP</constant></term>
<listitem>
<simpara>
In caso di collisione, non sovrascrivere la variabile
esistente.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_SAME</constant></term>
<listitem>
<simpara>In caso di collisione, anteporre al nome della variabile il prefisso
<parameter>prefix</parameter>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_ALL</constant></term>
<listitem>
<simpara>
Prefissa tutti i nomi delle variabili con
<parameter>prefix</parameter>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_INVALID</constant></term>
<listitem>
<simpara>
Aggiunge il prefisso <parameter>prefix</parameter> solo ai nomi di variabili
non valide/numeriche.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_IF_EXISTS</constant></term>
<listitem>
<simpara>
Sovrascrive la variabile solo se esiste già nella
tabella dei simboli corrente, altrimenti non fa nulla. Questo è utile
per definire un elenco di variabili valide e quindi estrarre
solo quelle variabili che sono state definite in
<varname>$_REQUEST</varname>, per esempio.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_IF_EXISTS</constant></term>
<listitem>
<simpara>
Crea nomi di variabili con prefisso solo se la versione senza prefisso
della stessa variabile esiste nella tabella dei simboli corrente.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_REFS</constant></term>
<listitem>
<simpara>
Estrae le variabili come riferimenti. Ciò significa effettivamente che i
valori delle variabili importate fanno ancora riferimento ai valori del
parametro <parameter>array</parameter>. Si può usare questo flag
da solo o combinarlo con qualsiasi altro flag utilizzando l'OR dei
<parameter>flags</parameter>.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Se <parameter>flags</parameter> non è specificato, si
presume che sia <constant>EXTR_OVERWRITE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>prefix</parameter></term>
<listitem>
<para>
Notare che <parameter>prefix</parameter> è richiesto solo se
<parameter>flags</parameter> è <constant>EXTR_PREFIX_SAME</constant>,
<constant>EXTR_PREFIX_ALL</constant>, <constant>EXTR_PREFIX_INVALID</constant>
o <constant>EXTR_PREFIX_IF_EXISTS</constant>. Se
il risultato con prefisso non è un nome di variabile valido, non viene
importato nella tabella dei simboli. I prefissi vengono separati automaticamente dalla
chiave dell'array da un carattere underscore.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Restituisce il numero di variabili importate con successo nella tabella dei
simboli.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Esempio di <function>extract</function></title>
<para>
Un possibile utilizzo di <function>extract</function> è importare nella
tabella dei simboli le variabili contenute in un array associativo restituito da
<function>wddx_deserialize</function>.
</para>
<programlisting role="php">
<![CDATA[
<?php
/* Si supponga che $var_array sia un array restituito da
wddx_deserialize */
$size = "grande";
$array_variabili = array("color" => "blu",
"size" => "media",
"shape" => "sfera");
extract($array_variabili, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
blu, grande, sfera, media
]]>
</screen>
<para>
<varname>$size</varname> non è stato sovrascritto perché abbiamo specificato
<constant>EXTR_PREFIX_SAME</constant>, che ha portato alla
creazione di <varname>$wddx_size</varname>. Se fosse stato specificato
<constant>EXTR_SKIP</constant>, allora <varname>$wddx_size</varname> non sarebbe nemmeno stato creato.
<constant>EXTR_OVERWRITE</constant> avrebbe fatto sì che <varname>$size</varname> avesse
il valore "medio" e <constant>EXTR_PREFIX_ALL</constant> avrebbe comportato nuove variabili
con nomi <varname>$wddx_color</varname>,
<varname>$wddx_size</varname> e
<varname>$wddx_shape</varname>.
</para>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
Non utilizzare <function>extract</function> su dati non attendibili, come
l'input dell'utente
(per esempio <varname>$_GET</varname>, <varname>$_FILES</varname>, ecc.).
In tal caso, assicurarsi di utilizzare uno dei valori di <parameter>flags</parameter>
che non sovrascrivono come
<constant>EXTR_SKIP</constant> e tenere presente che si dovrebbe estrarre
nello stesso ordine definito in
<link linkend="ini.variables-order">variables_order</link> all'interno del
<link linkend="ini">&php.ini;</link>.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>compact</function></member>
<member><function>list</function></member>
</simplelist>
</para>
</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
-->