cortesi Mon Mar 18 14:00:15 2002 EDT
Modified files:
/phpdoc/it/language control-structures.xml
Log:
update to EN 1.55 by Marco Spisto
Index: phpdoc/it/language/control-structures.xml
diff -u phpdoc/it/language/control-structures.xml:1.10
phpdoc/it/language/control-structures.xml:1.11
--- phpdoc/it/language/control-structures.xml:1.10 Tue Dec 18 13:00:12 2001
+++ phpdoc/it/language/control-structures.xml Mon Mar 18 14:00:05 2002
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- EN-Revision: 1.45 Maintainer: spisto Status: working -->
+<!-- EN-Revision: 1.55 Maintainer: spisto Status: working -->
<chapter id="control-structures">
<title>Strutture di controllo</title>
@@ -17,7 +17,7 @@
<sect1 id="control-structures.if">
<title><literal>if</literal></title>
<para>
- Il costrutto <literal>if</literal> � uno delle pi� importanti
+ Il costrutto <literal>if</literal> � una delle pi� importanti
caratteristiche di qualsiasi linguaggio, incluso PHP.
Permette l'esecuzione condizionata di frammenti di codice.
La struttura di controllo <literal>if</literal> di PHP � simile a quella del
linguaggio C:
@@ -31,14 +31,18 @@
</informalexample>
</para>
<simpara>
- Come descritto nel capitolo sulle espressioni, expr restituir� il
- suo valore di verit�. Se <replaceable>espressione</replaceable>
- � &true;, PHP eseguir� l'espressione, se
- � &false;, la ignorer�.
+ Come descritto nella <link linkend="language.expressions">sezione sulle
+ espressioni</link>, <replaceable>espressione</replaceable> restiruir� il suo
+ valore booleano. Se <replaceable>espressione</replaceable> vale &true;,
+ PHP eseguir� <replaceable>istruzione</replaceable>, e se essa vale
+ &false; - la ignorer�. Pi� informazioni riguardo i valori valutati
+ &false; possono essere trovati nella sezione <link
+ linkend="language.types.boolean.casting">'Conversione in booleano'</link>
+ .
</simpara>
<para>
- L'esempio che segue visualizzer� <computeroutput>a � maggiore
- di b</computeroutput> se <replaceable>$a</replaceable> sar� maggiore
+ L'esempio che segue visualizzer� <computeroutput>a � maggiore
+ di b</computeroutput> se <replaceable>$a</replaceable> sar� maggiore
di <replaceable>$b</replaceable>:
<informalexample>
<programlisting role="php">
@@ -52,17 +56,17 @@
<para>
Spesso sar� necessario eseguire pi� di una istruzione
condizionale. Naturalmente non � necessario, utilizzare una singola clausola
- <literal>if</literal> per ciascuna istruzione. Si possono raggruppare diverse
istruzioni
- in un singolo gruppo di istruzioni. Per esemipo, il codice che segue
- visualizzer� <computeroutput>a is bigger than b</computeroutput>
- se <replaceable>$a</replaceable> � maggiore di <replaceable>$b</replaceable>,
- e successivamente assegner� il valore della variabile
<replaceable>$a</replaceable>
+ <literal>if</literal> per ciascuna istruzione. Si possono raggruppare diverse
+istruzioni
+ in un singolo gruppo di istruzioni. Per esempio, il codice che segue
+ visualizzer� <computeroutput>a � maggiore di b</computeroutput>
+ se <replaceable>$a</replaceable> � maggiore di <replaceable>$b</replaceable>,
+ e successivamente assegner� il valore della variabile
+<replaceable>$a</replaceable>
alla variabile <replaceable>$b</replaceable>:
<informalexample>
<programlisting role="php">
<![CDATA[
if ($a > $b) {
- print "a � maggiore dib";
+ print "a � maggiore di b";
$b = $a;
}
]]>
@@ -70,9 +74,9 @@
</informalexample>
</para>
<simpara>
- Si possono annidare indefinitamente istruzioni
- <literal>if</literal>, la qual cosa fornisce piena
- flessibilit� per l'esecuzione di istruzioni condizionali in differenti punti del
+ Si possono annidare indefinitamente istruzioni
+ <literal>if</literal>, la qual cosa fornisce piena
+ flessibilit� per l'esecuzione di istruzioni condizionali in diversi punti del
programma.
</simpara>
</sect1>
@@ -81,14 +85,14 @@
<title><literal>else</literal></title>
<para>
Spesso � necessario eseguire un'istruzione se una proposizione � vera
- e un'altra istruzione se la proposizione � falsa. Per questo
- si usa la clausola <literal>else</literal>. <literal>else</literal>
+ e un'altra istruzione se la proposizione � falsa. Per questo
+ si usa la clausola <literal>else</literal>. <literal>else</literal>
estende il costrutto <literal>if</literal> aggiungendo la possibilit�
- di eseguire un'istruzione se l'espressione nel ramo <literal>if</literal>
- � &false;. L'esempio che segue
- visualizzer� <computeroutput>a � maggiore di
- b</computeroutput> se <replaceable>$a</replaceable> � maggiore di
- <replaceable>$b</replaceable> e <computeroutput>a NON � maggiore
+ di eseguire un'istruzione se l'espressione nel ramo <literal>if</literal>
+ � &false;. L'esempio che segue
+ visualizzer� <computeroutput>a � maggiore
+ di b</computeroutput> se <replaceable>$a</replaceable> � maggiore di
+ <replaceable>$b</replaceable> e <computeroutput>a NON � maggiore
di b</computeroutput> altrimenti:
<informalexample>
<programlisting role="php">
@@ -101,10 +105,10 @@
]]>
</programlisting>
</informalexample>
-
+
Il ramo <literal>else</literal> viene eseguito solo se l'espressione
- nel ramo <literal>if</literal> �
- &false;, e, nel caso ci fossero delle clausole
+ nel ramo <literal>if</literal> �
+ &false;, e, nel caso ci fossero delle clausole
<literal>elseif</literal>, solamente se le espressioni in esse contenute fossero
anch'esse &false; (vedere <link
linkend="control-structures.elseif">elseif</link>).
@@ -116,16 +120,16 @@
<title><literal>elseif</literal></title>
<para>
<literal>elseif</literal>, come � facile intuire, � una combinazione
- di <literal>if</literal> and <literal>else</literal>. Analogamente a
+ di <literal>if</literal> ed <literal>else</literal>. Analogamente ad
<literal>else</literal>, estende <literal>if</literal>
aggiungendo la possibilit� di eseguire un'altra istruzione nel caso
- in cui l'espressione contenuta nel ramo <literal>if</literal>
- sia &false;. Per�, a differenza
- di <literal>else</literal>, si eseguir� l'istruzione alternativa
- solamente se l'espressione contenuta nel ramo <literal>elseif</literal>
- sar� &true;. L'esempio
- che segue, visualizzer� <computeroutput>a � maggiore di
- b</computeroutput>, <computeroutput>a � uguale a b</computeroutput>
+ in cui l'espressione contenuta nel ramo <literal>if</literal>
+ sia &false;. Per�, a differenza
+ di <literal>else</literal>, si eseguir� l'istruzione alternativa
+ solamente se l'espressione contenuta nel ramo <literal>elseif</literal>
+ sar� &true;. L'esempio
+ che segue, visualizzer� <computeroutput>a � maggiore di
+ b</computeroutput>, <computeroutput>a � uguale a b</computeroutput>
oppure <computeroutput>a � minore di b</computeroutput>:
<informalexample>
<programlisting role="php">
@@ -143,21 +147,21 @@
</para>
<simpara>
Nel medesimo blocco <literal>if</literal> possono essere presenti
- pi� d'una clausola <literal>elseif</literal>. L'istruzione del
- primo ramo <literal>elseif</literal> la cui espressione
- sia &true; verr� eseguito. In PHP � possibile
- scrivere 'else if' (due parole) e il significato sar�
- lo stesso di 'elseif' (una sola parola). Il significato sintattico
+ pi� di una clausola <literal>elseif</literal>. Verr� eseguita
+ l'istruzione del primo ramo <literal>elseif</literal> la cui espressione
+ sia &true;. In PHP � possibile
+ scrivere 'else if' (due parole) e il significato sar�
+ lo stesso di 'elseif' (una sola parola). Il significato sintattico
� leggermente differente (se si ha familiarit� con il linguaggio C, esso ha lo
stesso
- comportamento) per� al lato pratico l'effetto �
+ comportamento) per� al lato pratico l'effetto �
il medesimo.
</simpara>
<simpara>
- L'istruzione di un ramo <literal>elseif</literal> si eseguir� solo se
l'espressione del
- ramo <literal>if</literal> e le espressioni dei
- rami <literal>elseif</literal> precedenti sono
+ L'istruzione di un ramo <literal>elseif</literal> verr� eseguita solo se
+l'espressione del
+ ramo <literal>if</literal> e le espressioni dei
+ rami <literal>elseif</literal> precedenti sono
&false;, e se l'espressione
- del ramo <literal>elseif</literal> �
+ del ramo <literal>elseif</literal> �
&true;.
</simpara>
</sect1>
@@ -165,11 +169,11 @@
<sect1 id="control-structures.alternative-syntax">
<title>Sintassi alternativa per le strutture di controllo</title>
<para>
- PHP offre una sintassi alternatica per alcune delle sue strutture di controllo;
+ PHP offre una sintassi alternativa per alcune delle sue strutture di controllo;
vale a dire, <literal>if</literal>,
<literal>while</literal>, <literal>for</literal>,
<literal>foreach</literal> e <literal>switch</literal>.
- Fondamentalmente la sintassi alternativa consiste nel sostituire
+ Fondamentalmente la sintassi alternativa consiste nel sostituire
la prima parentesi graffa con il carattere "duepunti" (:) e la seconda parentesi
graffa con
<literal>endif;</literal>, <literal>endwhile;</literal>,
<literal>endfor;</literal>, <literal>endforeach;</literal>, oppure
@@ -178,21 +182,21 @@
<programlisting role="php">
<![CDATA[
<?php if ($a == 5): ?>
-A � maggiore di 5
+a � uguale a 5
<?php endif; ?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
- Nell'esempio precedente, il blocco HTML "A = 5" � incluso nel ramo
- <literal>if</literal> scritto con utilizzando la sintassi alternativa.
+ Nell'esempio precedente, il blocco HTML "a � uguale a 5" � incluso nel ramo
+ <literal>if</literal> scritto utilizzando la sintassi alternativa.
Il blocco HTML verr� visualizzato solamente se $a � uguale a 5.
</simpara>
<para>
- La sintassi alternativa si applica anche a <literal>else</literal> e
- <literal>elseif</literal>. Nell'esempio che segue si mostra come utilizzare la
sintassi alternativa
- nel caso di un <literal>if</literal> con <literal>elseif</literal> e
+ La sintassi alternativa si applica anche ad <literal>else</literal> ed
+ <literal>elseif</literal>. Nell'esempio che segue si mostra come utilizzare la
+sintassi alternativa
+ nel caso di un <literal>if</literal> con <literal>elseif</literal> ed
<literal>else</literal>:
<informalexample>
<programlisting role="php">
@@ -204,7 +208,7 @@
print "a � uguale a 6";
print "!!!";
else:
- print "a non � uguale n� a 5 n� a 6";
+ print "a non � n� 5 n� 6";
endif;
]]>
</programlisting>
@@ -221,8 +225,8 @@
<title><literal>while</literal></title>
<para>
Il ciclo <literal>while</literal> � la forma di ciclo pi� semplice
- tra quelle possibili in PHP. Si comporta come la sua controparte nel linguaggio
C.
- La forma basica di un ciclo <literal>while</literal> � la seguente:
+ tra quelle possibili in PHP. Si comporta come la sua controparte nel linguaggio C.
+ La forma di base di un ciclo <literal>while</literal> � la seguente:
<informalexample>
<programlisting>
<![CDATA[
@@ -232,22 +236,22 @@
</informalexample>
</para>
<simpara>
- Il significato di un ciclo <literal>while</literal> � semplice.
- Istruisce l'interprete PHP perch� esegua l'istruzione (o le istruzioni)
- in esso racchiuse, ripetutamente, fintanto che l'espressionbe contenuta
+ Il significato di un ciclo <literal>while</literal> � semplice.
+ Istruisce l'interprete PHP perch� esegua l'istruzione (o le istruzioni)
+ in esso racchiuse, ripetutamente, fintanto che l'espressione contenuta
nella clausola <literal>while</literal> ha valore &true;.
- Il valore dell'espressione viene verificato ogni volta che il ciclo
+ Il valore dell'espressione viene verificato ogni volta che il ciclo
si ripete (iterazione), cos� che anche se il valore dell'espressione cambia
durante
- l'esecuzione dell'istruzione, il ciclo non termina fino
+ l'esecuzione dell'istruzione, il ciclo non termina fino
all'iterazione successiva.
Ovviamente, se l'espressione nella clausola <literal>while</literal> ha valore
- &false; dall'inizio, l'istruzione racchiusa nel blocco non verr� eseguita nemmeno
+ &false; dall'inizio, l'istruzione racchiusa nel blocco non verr� eseguita nemmeno
una volta.
</simpara>
<para>
- Come nel caso della struttura di controllo <literal>if</literal>, si possono
raggruppare
- pi� istruzioni nello medesimo ciclo <literal>while</literal>
- racchiudendo le istruzioni in parentesi grafa, oppure
+ Come nel caso della struttura di controllo <literal>if</literal>, si possono
+raggruppare
+ pi� istruzioni nello medesimo ciclo <literal>while</literal>
+ racchiudendo le istruzioni in parentesi graffa, oppure
utilizzando la sintassi alternativa:
<informalexample>
<programlisting>
@@ -258,7 +262,7 @@
</informalexample>
</para>
<para>
- Gli esempi seguenti sono identici e entrambi visualizzano i numeri da
+ Gli esempi seguenti sono identici e entrambi visualizzano i numeri da
1 a 10:
<informalexample>
<programlisting>
@@ -268,8 +272,8 @@
$i = 1;
while ($i <= 10) {
print $i++; /* Il valore visualizzato � il valore della
- variabile $i prima dell'incremento
- (post-increment) */
+ variabile $i prima dell'incremento
+ (post-incremento) */
}
/* esempio 2 */
@@ -292,12 +296,12 @@
<literal>while</literal>, con l'unica differenza che il valore dell'espressione
viene controllato alla fine di ogni iterazione anzich� all'inizio.
La differenza pi� importante rispetto a <literal>while</literal> � che
- la prima iterazione di un blocco <literal>do..while</literal>verr�
- sempre eseguita (il valore dell'espressione viene controllato alla fine
- del ciclo), mentre non � necessariamente vero in un
- ciclo <literal>while</literal> questo (il valore dell'espressione viene
+ la prima iterazione di un blocco <literal>do..while</literal> verr�
+ sempre eseguita (il valore dell'espressione viene controllato alla fine
+ del ciclo), mentre non sar� necessariamente eseguito in un
+ ciclo <literal>while</literal> (il valore dell'espressione viene
controllato all'inizio del ciclo, e se tale valore �
- &false; dall'inizio, l'esecuzione del ciclo
+ &false; dall'inizio, l'esecuzione del ciclo
termina immediatamente).
</simpara>
<para>
@@ -317,13 +321,13 @@
<simpara>
Il ciclo precedente verr� eseguito un'unica volta, dal momento che
alla prima iterazione, quando si controlla l'espressione, il suo valore sar�
- &false; ($i non � maggiore di 0) e il ciclo di
+ &false; ($i non � maggiore di 0) e il ciclo di
esecuzioni, termina.
</simpara>
<para>
- Chi ha utilizzato il linguaggio C conosce probabilmente un'altro modo di
utilizzare
- il ciclo <literal>do..while</literal>, che permette di terminare l'esecuzione
- delle istruzioni durante l'esecuzione stessa, utilizzando
+ Chi ha utilizzato il linguaggio C conosce probabilmente un'altro modo di
+utilizzare
+ il ciclo <literal>do..while</literal>, che permette di terminare l'esecuzione
+ delle istruzioni durante l'esecuzione stessa, utilizzando
<literal>do..while</literal>(0), e usando l'istruzione <link
linkend="control-structures.break"><literal>break</literal></link>.
Il codice che segue esemplifica questa possibilit�:
@@ -350,7 +354,7 @@
</para>
<simpara>
Non vi preoccupate se l'esempio non � sufficientemente chiaro.
- Si possono scrivere ottimi programmi PHP anche senza far ricorso a questa
+ Si possono scrivere ottimi programmi PHP anche senza far ricorso a questa
'possibilit�'.
</simpara>
</sect1>
@@ -364,36 +368,36 @@
<informalexample>
<programlisting>
<![CDATA[
-for (expr1; expr2; expr3) istruzione
+for (espressione1; espressione2; espressione3) istruzione
]]>
</programlisting>
</informalexample>
</para>
<simpara>
- Il valore della prima espressione (<replaceable>expr1</replaceable>) viene
- verificato (eseguito) una sola volta incondizionatamente all'inizio del
+ Il valore della prima espressione (<replaceable>espressione1</replaceable>) viene
+ verificato (eseguito) una sola volta incondizionatamente all'inizio del
ciclo.
</simpara>
<simpara>
- Ad ogni iterazione,
- si controlla il valore di <replaceable>expr2</replaceable>. Se �
- &true;, il ciclo prosegue e viene eseguita
- l'istruzione (o le istruzioni) contenuta nel blocco;
+ Ad ogni iterazione,
+ si controlla il valore di <replaceable>espressione2</replaceable>. Se �
+ &true;, il ciclo prosegue e viene eseguita
+ l'istruzione (o le istruzioni) contenuta nel blocco;
se � &false;, l'esecuzione del ciclo termina.
</simpara>
<simpara>
- Al termine di ogni iterazione, <replaceable>expr3</replaceable> si verifica
- il valore di <replaceable>expr3</replaceable>.
+ Al termine di ogni iterazione, si verifica (si esegue)
+ il valore di <replaceable>espressione3</replaceable>.
</simpara>
<simpara>
- Le due espressioni possono anche non essere presenti.
- Se non esiste <replaceable>expr2</replaceable> significa che il ciclo deve
- essere eseguito indefinitamente (PHP considera implicitamente che il
- suo valore � &true;, come in C). Questa possibilit� in fondo non �
+ Le due espressioni possono anche non essere presenti.
+ Se non esiste <replaceable>espressione2</replaceable> significa che il ciclo deve
+ essere eseguito indefinitamente (PHP considera implicitamente che il
+ suo valore � &true;, come in C). Questa possibilit� in fondo non �
utile come pu� sembrare perch� obbliga a terminare il ciclo utilizzando
- l'istruzione <link
+ l'istruzione <link
linkend="control-structures.break"><literal>break</literal></link>
- invece di utilizzare le espressioni di verit� del ciclo <literal>for</literal>
+ invece di utilizzare le espressioni booleane del ciclo <literal>for</literal>
.
</simpara>
<para>
@@ -402,13 +406,13 @@
<informalexample>
<programlisting role="php">
<![CDATA[
-/* example 1 */
+/* esempio 1 */
for ($i = 1; $i <= 10; $i++) {
print $i;
}
-/* example 2 */
+/* esempio 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
@@ -417,7 +421,7 @@
print $i;
}
-/* example 3 */
+/* esempio 3 */
$i = 1;
for (;;) {
@@ -428,7 +432,7 @@
$i++;
}
-/* example 4 */
+/* esempio 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
]]>
@@ -436,30 +440,30 @@
</informalexample>
</para>
<simpara>
- Naturalmente il primo esempio sembra il migliore (o
- forse il quarto), ma l'uso del
+ Naturalmente il primo esempio sembra il migliore (o
+ forse il quarto), ma l'uso del
ciclo <literal>for</literal> senza espressioni pu� essere utile
in molti casi.
</simpara>
<para>
- PHP offre una sintassi alternativa (con i "punto e virgola") per i
+ PHP offre una sintassi alternativa (con i "punto e virgola") per i
cicli <literal>for</literal>.
<informalexample>
<programlisting>
<![CDATA[
-for (expr1; expr2; expr3): istruzione; ...; endfor;
+for (espressione1; espressione2; espressione3): istruzione; ...; endfor;
]]>
</programlisting>
</informalexample>
</para>
<para>
- Alcuni linguaggi permettono l'uso della struttura di controllo
<literal>foreach</literal> per
- attraversare un array o una tabella hash. PHP 3 non premette l'uso di tale ciclo
mentre PHP 4 s�
- (vedere <link
- linkend="control-structures.foreach">foreach</link>). In PHP 3 �
+ Alcuni linguaggi permettono l'uso della struttura di controllo
+<literal>foreach</literal> per
+ attraversare un array o una tabella hash. PHP 3 non premette l'uso di tale ciclo
+mentre PHP 4 si
+ (vedere <link
+ linkend="control-structures.foreach">foreach</link>). In PHP 3 �
possibile combinare <link linkend="control-structures.while">while</link>
con la funzione <function>list</function> e <function>each</function>
- per ottenere la stessa funzionali�. Si veda la documentazione si queste funzioni
+ per ottenere la stessa funzionali�. Si veda la documentazione di queste funzioni
per ulteriori esempi.
</para>
@@ -469,24 +473,24 @@
<title><literal>foreach</literal></title>
<para>
PHP 4 (non PHP 3) permette l'uso della struttura di controllo
<literal>foreach</literal>,
- alla stessa maniera del linguaggio Perl e altri.
- <literal>foreach</literal> offre una maniera semplice di attraversare un array.
Esistono due possibili notazioni sintattiche; la seconda �
+ alla stessa maniera del linguaggio Perl e altri. Ci� semplicemente fornisce
+ una facile metodo per attraversare un array. Esistono due possibili notazioni
+sintattiche; la seconda �
un'utile estensione della prima:
<informalexample>
<programlisting>
<![CDATA[
foreach(array_expression as $value) istruzione
-foreach(array_expression as $key => $value) istruzione
+foreach(array_expression as $key => $value) istruzione
]]>
</programlisting>
</informalexample>
</para>
<simpara>
- La prima attraversa l'array dato da <literal>array_expression</literal>.
- Ad ogni ciclo, si assegna il valore dell'elemento corrente a
<literal>$value</literal>
- e il puntatore interno avanza di una posizione (in modo tale che
- al ciclo successivo l'elemento corrente sar� il successivo elemento
- dell'array).
+ La prima attraversa l'array dato da
+ <literal>array_expression</literal>. Ad ogni ciclo, si assegna il valore
+ dell'elemento corrente a <literal>$value</literal> e
+ il puntatore interno avanza di una posizione (in modo tale che al ciclo successivo
+ l'elemento corrente sar� il successivo elemento dell'array).
</simpara>
<simpara>
La seconda esegue lo stesso ciclo con la differenza che il
@@ -496,7 +500,7 @@
<para>
<note>
<para>
- All'inizio dell'esecuzione di un ciclo <literal>foreach</literal>
+ All'inizio dell'esecuzione di un ciclo <literal>foreach</literal>
il puntatore interno viene automaticamente posizionato nella prima
posizione. Questo significa che non � necessario utilizzare la
funzione <function>reset</function> prima di un ciclo <literal>foreach</literal>
@@ -508,9 +512,9 @@
<note>
<para>
� importante notare che <literal>foreach</literal> opera su una copia
- dell'array, pertanto il puntatore dell'array originale non viene
- modificato come accade utilizzando la funzione <function>each</function>
- e le modifiche agli elementi dell'array non
+ dell'array, non sull'array stesso, pertanto il puntatore dell'array originale
+ non viene modificato come accade utilizzando la funzione
+<function>each</function>
+ e le modifiche agli elementi dell'array non
appaiono nell'array originale.
</para>
</note>
@@ -533,7 +537,7 @@
}
foreach ($arr as $value) {
- echo "Valore: $value<br>\n";
+ echo "Valore: $value<br>\n";
}
]]>
</programlisting>
@@ -544,53 +548,54 @@
<![CDATA[
reset ($arr);
while (list($key, $value) = each ($arr)) {
- echo "Key: $key; Valore: $value<br>\n";
+ echo "Chiave: $key; Valore: $value<br>\n";
}
-foreach ($arr as $key => $value) {
- echo "Key: $key; Valore: $value<br>\n";
+foreach ($arr as $key => $value) {
+ echo "Chiave: $key; Valore: $value<br>\n";
}
]]>
</programlisting>
</informalexample>
</para>
<para>
- Di seguito, altri esempi per mostrare possibili utilizzi:
+ Di seguito, altri esempi per mostrare possibili utilizzi:
<informalexample>
<programlisting role="php">
<![CDATA[
-/* foreach example 1: value only */
+/* esempio 1 foreach: solo il valore */
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
- print "Valore corrente of \$a: $v.\n";
+ print "Valore corrente di \$a: $v.\n";
}
-/* foreach example 2: value (with key printed for illustration) */
+/* esempio 2 foreach: valore (con la chiave stampata) */
$a = array (1, 2, 3, 17);
-$i = 0; /* for illustrative purposes only */
+$i = 0; /* solo per un proposito illustrativo */
foreach($a as $v) {
print "\$a[$i] => $v.\n";
+ $i++;
}
-/* foreach example 3: key and value */
+/* esempio 3 foreach: chiave e valore */
$a = array (
- "one" => 1,
- "two" => 2,
- "three" => 3,
- "seventeen" => 17
+ "uno" => 1,
+ "due" => 2,
+ "tre" => 3,
+ "diciassette" => 17
);
foreach($a as $k => $v) {
print "\$a[$k] => $v.\n";
}
-/* foreach example 4: multi-dimensional arrays */
+/* esempio 4 foreach: array multidimensionali */
$a[0][0] = "a";
$a[0][1] = "b";
@@ -603,7 +608,7 @@
}
}
-/* foreach example 5: dynamic arrays */
+/* esempio 5 foreach: array dinamici */
foreach(array(1, 2, 3, 4, 5) as $v) {
print "$v\n";
@@ -624,17 +629,17 @@
</simpara>
<simpara>
<literal>break</literal> accetta un argomento opzionale che definisce,
- nel caso di cicli annidati, il livello del ciclo che � da
+ nel caso di cicli annidati, il livello del ciclo che � da
interrompere.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
-$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');
+$arr = array ('uno', 'due', 'tre', 'quattro', 'stop', 'cinque');
while (list (, $val) = each ($arr)) {
if ($val == 'stop') {
- break; /* Si pu� anche usare 'break 1;'. */
+ break; /* Qui si pu� anche usare 'break 1;'. */
}
echo "$val<br>\n";
}
@@ -664,20 +669,20 @@
<title><literal>continue</literal></title>
<simpara>
<literal>continue</literal> si utilizza per interrompere l'esecuzione
- del ciclo corrente e continuare con l'esecuzione
+ del ciclo corrente e continuare con l'esecuzione
all'inizio del ciclo successivo.
</simpara>
<simpara>
<literal>continue</literal> accetta un argomento numerico opzionale
che definisce, nel caso di cicli annidati, il numero di cicli da interrompere
- e a cui iniziare l'esecuzione dell'iterazione successiva.
+ e da cui iniziare l'esecuzione dell'iterazione successiva.
</simpara>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
while (list ($key, $value) = each ($arr)) {
- if (!($key % 2)) { // skip odd members
+ if (!($key % 2)) { // salta odd members
continue;
}
do_something_odd ($value);
@@ -685,16 +690,16 @@
$i = 0;
while ($i++ < 5) {
- echo "Outer<br>\n";
+ echo "Esterno<br>\n";
while (1) {
- echo " Middle<br>\n";
+ echo " Centrale<br>\n";
while (1) {
- echo " Inner<br>\n";
+ echo " Interno<br>\n";
continue 3;
}
- echo "This never gets output.<br>\n";
+ echo "Questo non sar� mai stampato.<br>\n";
}
- echo "Neither does this.<br>\n";
+ echo "Nemmeno questo.<br>\n";
}
]]>
</programlisting>
@@ -705,10 +710,10 @@
<sect1 id="control-structures.switch">
<title><literal>switch</literal></title>
<simpara>
- <literal>switch</literal> � simile a una serie di
- IF sulla stessa espressione. In molti casi pu� essere
- necessario confrontare una variabile (o espressione) con differenti
- valori ed eseguire un differente blocco di istruzioni a seconda
+ <literal>switch</literal> � simile a una serie di
+ if sulla stessa espressione. In molti casi pu� essere
+ necessario confrontare una variabile (o espressione) con
+ differenti valori ed eseguire un differente blocco di istruzioni a seconda
del valore di detta variabile. Questo � esattamente quello che fa la struttura
di controllo <literal>switch</literal>.
</simpara>
@@ -721,24 +726,24 @@
<programlisting role="php">
<![CDATA[
if ($i == 0) {
- print "i equals 0";
+ print "i � uguale a 0";
}
if ($i == 1) {
- print "i equals 1";
+ print "i � uguale a 1";
}
if ($i == 2) {
- print "i equals 2";
+ print "i � uguale a 2";
}
switch ($i) {
case 0:
- print "i equals 0";
+ print "i � uguale a 0";
break;
case 1:
- print "i equals 1";
+ print "i � uguale a 1";
break;
case 2:
- print "i equals 2";
+ print "i � uguale a 2";
break;
}
]]>
@@ -749,15 +754,15 @@
� importante comprendere esattamente come viene eseguita la
clausola <literal>switch</literal> per evitare errori.
Un'istruzione <literal>switch</literal> esegue linea dopo linea
- le istruzioni in essa contenuta.
- Solamente quando incontra una clausola <literal>case</literal>
+ le istruzioni in essa contenuta. All'inizio non viene eseguito
+ alcun codice. Solamente quando incontra una clausola <literal>case</literal>
il cui valore � uguale al valore della viariabile, PHP inizia ad
- eseguire le istruzioni contenute nel blocco case.
- PHP continua l'esecuzione delle istruzioni fino alla termine del
- blocco <literal>switch</literal>, o quando incontra un'istruzione
+ eseguire le istruzioni contenute nel blocco <literal>case</literal>.
+ PHP continua l'esecuzione delle istruzioni fino alla termine del
+ blocco <literal>switch</literal>, o quando incontra un'istruzione
<literal>break</literal>. Se non esiste alcuna
istruzione <literal>break</literal> al termine di un blocco case
- PHP continuer� l'esecuzione le istruzioni del blocco case successivo.
+ PHP continuer� l'esecuzione delle istruzioni del blocco case successivo.
Per esempio:
<informalexample>
<programlisting role="php">
@@ -779,15 +784,15 @@
istruzioni contenute nei blocchi case. Se $i � uguale a 1,
PHP eseguir� le istruzioni degli ultimi due blocchi case e
solamente se $i � uguale a 2 otterremo il risultato voluto
- e si visualizzer� solo '$i � uguale a 2'.
- Pertanto � importante non dimenticare l'istruzione <literal>break</literal>
+ e si visualizzer� solo '$i � uguale a 2'. Pertanto
+ � importante non dimenticare l'istruzione <literal>break</literal>
(anche se in alcuni casi potr� essere necessario non utilizzarla).
</simpara>
<simpara>
In un'istruzione <literal>switch</literal>, la condizione in parentesi
viene valutata una sola volta e il risultato viene confrontato con
- ciascun ramo <literal>case</literal>. Utilizzando <literal>elseif</literal>,
- la ondizione viene valutata una seconda volta. Se tale condizione � pi�
+ ciascun ramo <literal>case</literal>. Utilizzando <literal>elseif</literal>,
+ la condizione viene valutata una seconda volta. Se tale condizione � pi�
complessa di un semplice confronto e/o � in un ciclo piuttosto pesante,
l'uso di <literal>switch</literal> dovrebbe garantire un minor tempo di
esecuzione.
</simpara>
@@ -801,10 +806,10 @@
case 0:
case 1:
case 2:
- print "i is less than 3 but not negative";
+ print "i � minore di 3 ma non negativo";
break;
case 3:
- print "i is 3";
+ print "i � 3";
}
]]>
</programlisting>
@@ -812,8 +817,8 @@
</para>
<para>
Un blocco case speciale � il il blocco case di default.
- Uguagli tutte le condizioni non uguagliate nei blocchi case
- precedenti e dev'essere l'ultimo blocco <literal>case</literal> statement. Per
esempio:
+ Uguaglia tutte le condizioni non uguagliate nei blocchi case precedenti
+ e dev'essere l'ultimo blocco <literal>case</literal>. Per esempio:
<informalexample>
<programlisting role="php">
<![CDATA[
@@ -828,21 +833,21 @@
print "i � uguale a 2";
break;
default:
- print "i non � ugluale a 0, 1 o 2";
+ print "i � diverso da 0, 1 o 2";
}
]]>
</programlisting>
</informalexample>
</para>
<para>
- L'espressione in un ramo case <literal>case</literal> pu� essere
+ L'espressione in un ramo <literal>case</literal> pu� essere
qualsiasi espressione il cui valore sar� di tipo intero, decimale,
numerico e stringa. Array e oggetti (objects) non sono ammessi
a meno che non siano dereferenziati a un tipo di dato semplice tra quelli
precedentemente elencati.
</para>
<para>
Come per altre strutture di controllo � possibile utilizzare una sintassi
- alternativa. Si veda
+ alternativa. Si veda
<link linkend="control-structures.alternative-syntax">Sintassi alternativa per le
strutture di controllo</link>
per ulteriori esempi.
<informalexample>
@@ -859,7 +864,7 @@
print "i � uguale a 2";
break;
default:
- print "i non � uguale a 0, 1 o 2";
+ print "i � diverso da 0, 1 o 2";
endswitch;
]]>
</programlisting>
@@ -872,8 +877,8 @@
<para>
Il costrutto <literal>declare</literal> si usa per definire
direttive di esecuzione per blocchi di istruzioni.
- La sintassi � simile alla
- sintassi di altre strutture di controllo:
+ La sintassi � simile alla sintassi
+ di altre strutture di controllo:
<informalexample>
<programlisting>
<![CDATA[
@@ -886,48 +891,48 @@
La sezione <literal>direttiva</literal> permette di
impostare il comportamento del blocco <literal>declare</literal>
.
- Attualemente � riconosciuta una sola direttiva: la
+ Attualmente � riconosciuta una sola direttiva: la
direttiva <literal>ticks</literal>. (Fare riferimento pi� in basso per ulteriori
informazioni relative alla
- direttiva
+ direttiva
<link linkend="control-structures.declare.ticks">ticks</link>)
</para>
<para>
- La parte <literal>istruzione</literal> del
- blocco <literal>declare</literal> verr� eseguita. Come
+ Verr� eseguita la parte <literal>istruzione</literal> del
+ blocco <literal>declare</literal> - come
verr� eseguita e quali effetti collaterali emergeranno durante l'esecuzione
potr� dipendere dalla direttiva impostata nel
blocco <literal>direttiva</literal>.
</para>
<sect2 id="control-structures.declare.ticks">
<title>Ticks</title>
- <para>A tick is an event that occurs for every
- <replaceable>N</replaceable> low-level statements executed
- by the parser within the <literal>declare</literal> block.
- The value for <replaceable>N</replaceable> is specified
- using <literal>ticks=<replaceable>N</replaceable></literal>
- within the <literal>declare</literal> blocks's
- <literal>directive</literal> section.
+ <para>Un tick � un evento che si verifica per ogni
+ <replaceable>N</replaceable> istruzioni di basso livello eseguite
+ dal parser all'interno del blocco <literal>declare</literal>.
+ Il valore per <replaceable>N</replaceable> viene specificato
+ usando <literal>ticks=<replaceable>N</replaceable></literal>
+ all'interno della sezione <literal>direttiva</literal> del blocco
+ <literal>declare</literal>.
</para>
<para>
- The event(s) that occurs on each tick is specified using the
- <function>register_tick_function</function>. See the example
- below for more details. Note that more than one event can occur
- for each tick.
+ L'evento (o gli eventi) che si verifica su ogni tick � specificato usando
+ <function>register_tick_function</function>. Vedere l'esempio
+ pi� in basso per ulteriori dettagli. Notare che pu� verificarsi pi� di un evento
+ per ogni tick.
</para>
<para>
<example>
- <title>Profile a section of PHP code</title>
+ <title>Segue una sezione di codice PHP</title>
<programlisting role="php">
<![CDATA[
<pre>
<?php
-// A function that records the time when it is called
+// Una funzione che registra il tempo quando viene chiamata
function profile ($dump = FALSE)
{
static $profile;
- // Return the times stored in profile, then erase it
+ // Restituisce il tempo immagazinato in $profile, successivamente lo cancella
if ($dump) {
$temp = $profile;
unset ($profile);
@@ -937,578 +942,464 @@
$profile[] = microtime ();
}
-// Set up a tick handler
+// Imposta un tick handler
register_tick_function("profile");
-// Initialize the function before the declare block
+// Inizializza la funzione prima del blocco declare
profile ();
-// Run a block of code, throw a tick every 2nd statement
-declare (ticks=2) {
+// Esegue un blocco di codice, attraverso un tick ogni seconda istruzione
+declare (ticks = 2) {
for ($x = 1; $x < 50; ++$x) {
echo similar_text (md5($x), md5($x*$x)), "<br>";
}
}
-// Display the data stored in the profiler
+// Mostra i dati immagazionati nel profilo
print_r (profile (TRUE));
?>
</pre>
]]>
</programlisting>
</example>
- The example profiles the PHP code within the 'declare'
- block, recording the time at which every second low-level
- statement in the block was executed. This information can
- then be used to find the slow areas within particular
- segments of code. This process can be performed using other
- methods: using ticks is more convenient and easier to
- implement.
+ L'esempio descrive il codice PHP all'interno del blocco 'declare',
+ registrando il tempo in cui � stata eseguita ogni seconda istruzione
+ di basso livello. Questa informazione pu�
+ poi essere usata per trovare le aree lente all'interno di particolari
+ segmenti di codice. Questo processo pu� essere ottimizzato usando altri
+ metodi: usando i tick � pi� conveniente e facile da
+ implementare.
</para>
<simpara>
- Ticks are well suited for debugging, implementing simple
- multitasking, backgrounded I/O and many other tasks.
+ I tick sono ben adeguati per il debugging, l'implementazione di semplici
+ multitasking, backgrounded I/O e molti altri compiti.
</simpara>
<simpara>
- See also <function>register_tick_function</function> and
+ Vedere anche <function>register_tick_function</function> e
<function>unregister_tick_function</function>.
</simpara>
</sect2>
</sect1>
-
- <sect1 id="function.require">
- <title><function>require</function></title>
- <simpara>
- The <function>require</function> statement replaces itself with
- the specified file, much like the C preprocessor's
- <literal>#include</literal> works.
- </simpara>
- <simpara>
- If "URL fopen wrappers" are enabled in PHP (which they are in the
- default configuration), you can specify the file to be
- <function>require</function>ed using an URL instead of a local
- pathname. See <link linkend="features.remote-files">Remote
- files</link> and <function>fopen</function> for more information.
- </simpara>
+
+ <sect1 id="function.return">
+ <title>return</title>
<simpara>
- An important note about how this works is that when a file is
- <function>include</function>ed or <function>require</function>ed,
- parsing drops out of PHP mode and into HTML mode at the beginning
- of the target file, and resumes PHP mode again at the end. For
- this reason, any code inside the target file which should be
- executed as PHP code must be enclosed within <link
- linkend="language.basic-syntax.phpmode">valid PHP start and end
- tags</link>.
+ Se viene chiamato all'interno di una funzione, l'istruzione
+<function>return</function>
+ termina immediatamente l'esecuzione della funzione corrente, e
+ restituisce il suo argomento come valore della funzione
+ chiamata. <function>return</function> terminer� anche l'esecuzione di
+un'istruzione
+ <function>eval</function> o di un file di script.
+ </simpara>
+ <simpara>
+ Se viene chiamato in uno scope globale, allora verr� terrminata l'esecuzione
+ del file di script corrente. Nel caso in cui il file di script corrente sia un
+file chiamato da
+ <function>include</function> o <function>require</function>,
+ il controllo viene passato al file chiamante. Ciononostante, se
+ il file di script corrente � un file chiamato da <function>include</function>,
+allora
+ il valore dato da <function>return</function> verr� restituito
+ come valore della chiamata <function>include</function>. Se
+ viene chiamato <function>return</function> all'interno del file di script
+ principale, allora l'esecuzione dello script terminer�. Se il file di script
+corrente
+ � stato nominato da <link
+ linkend="ini.auto-prepend-file">auto_prepend_file</link> o <link
+ linkend="ini.auto-append-file">auto_append_file</link>
+ con le opzioni di configurazione nel <link linkend="configuration.file">
+ file di configurazione</link>, allora l'esecuzione di quello script
+ termina.
</simpara>
- <simpara>
- <function>require</function> is not actually a function in PHP;
- rather, it is a language construct. It is subject to some
- different rules than functions are. For instance,
- <function>require</function> is not subject to any containing
- control structures. For another, it does not return any value;
- attempting to read a return value from a
- <function>require</function> call results in a parse error.
- </simpara>
- <simpara>
- Unlike <function>include</function>, <function>require</function>
- will <emphasis>always</emphasis> read in the target file,
- <emphasis>even if the line it's on never executes</emphasis>. If
- you want to conditionally include a file, use
- <function>include</function>. The conditional statement won't
- affect the <function>require</function>. However, if the line on
- which the <function>require</function> occurs is not executed,
- neither will any of the code in the target file be executed.
+ <simpara>Per maggiori informazioni, consultare <link
+ linkend="functions.returning-values">Valori restituiti</link>.
</simpara>
+ <note>
+ <simpara>
+ Notate che poich� <function>return</function> � un costrutto di linguaggio
+ e non una funzione, le parentesi che circondano i suoi
+ argomenti <emphasis>non</emphasis> sono richieste --infatti, �
+ pi� comune evitarle che usarle, nonostante ci�
+ non c'� motivo di preferire un modo o l'altro.
+ </simpara>
+ </note>
+ </sect1>
+
+
+ <sect1 id="function.require">
+ <title><function>require</function></title>
+
<simpara>
- Similarly, looping structures do not affect the behaviour of
- <function>require</function>. Although the code contained in the
- target file is still subject to the loop, the
- <function>require</function> itself happens only once.
+ L'istruzione <function>require</function> include e valuta
+ il file specifico.
</simpara>
- <para>
- This means that you can't put a <function>require</function>
- statement inside of a loop structure and expect it to include the
- contents of a different file on each iteration. To do that, use an
- <function>include</function> statement.
- <informalexample>
- <programlisting role="php">
-<![CDATA[
-require ('header.inc');
-]]>
- </programlisting>
- </informalexample>
- </para>
<simpara>
- When a file is <function>require</function>ed, the code it
- contains inherits the variable scope of the line on which the
- <function>require</function> occurs. Any variables available at
- that line in the calling file will be available within the called
- file. If the <function>require</function> occurs inside a
- function within the calling file, then all of the code contained
- in the called file will behave as though it had been defined
- inside that function.
+ <function>require</function> include e valuta uno specifico file.
+ Informazioni dettagliate su come funziona quest'inclusione sono descritte nella
+ documentazione di <function>include</function>.
+ </simpara>
+ <simpara>
+ <function>require</function> e <function>include</function>
+ sono identiche in ogni senso eccetto per come esse trattano gli errori.
+ <function>include</function> produce un
+ <link linkend="internal.e-warning">Warning</link> mentre
+ <function>require</function> restituisce un <link linkend="internal.e-error">
+ Fatal Error</link>. In altre parole, non esitate ad usare
+ <function>require</function> se volete che un file mancante fermi l'esecuzione
+ della pagina. <function>include</function> non si comporta in questo modo, lo
+ script continuer� nonostante tutto. Assicuratevi di avere un appropriato
+ <link linkend="ini.include-path">include_path</link> impostato a dovere.
</simpara>
<para>
- If the <function>require</function>ed file is called via HTTP
- using the fopen wrappers, and if the target server interprets the
- target file as PHP code, variables may be passed to the
- <function>require</function>ed file using an URL request string as
- used with HTTP GET. This is not strictly speaking the same thing
- as <function>require</function>ing the file and having it inherit
- the parent file's variable scope; the script is actually being run
- on the remote server and the result is then being included into
- the local script.
- <informalexample>
+ <example>
+ <title>Esempio di base con <function>require</function></title>
<programlisting role="php">
<![CDATA[
-/* This example assumes that someserver is configured to parse .php
- * files and not .txt files. Also, 'works' here means that the variables
- * $varone and $vartwo are available within the require()ed file. */
+<?php
-/* Won't work; file.txt wasn't handled by someserver. */
-require ("http://someserver/file.txt?varone=1&vartwo=2");
+require 'prepend.php';
-/* Won't work; looks for a file named 'file.php?varone=1&vartwo=2'
- * on the local filesystem. */
-require ("file.php?varone=1&vartwo=2");
+require $qualche_file;
-/* Works. */
-require ("http://someserver/file.php?varone=1&vartwo=2");
+require ('qualche_file.txt');
-$varone = 1;
-$vartwo = 2;
-require ("file.txt"); /* Works. */
-require ("file.php"); /* Works. */
+?>
]]>
</programlisting>
- </informalexample>
+ </example>
</para>
<simpara>
- In PHP 3, it is possible to execute a <literal>return</literal>
- statement inside a <function>require</function>ed file, as long as
- that statement occurs in the global scope of the
- <function>require</function>ed file. It may not occur within any
- block (meaning inside braces ({}). In PHP 4, however, this ability
- has been discontinued. If you need this functionality, see
- <function>include</function>.
+ Vedere la documentazione di <function>include</function> per pi� esempi.
</simpara>
+ <note>
+ <simpara>
+ Prima di PHP 4.0.2, si applica la seguente logica: <function>require</function>
+ tenter� sempre di leggere il file chiamato, anche se la riga su cui si trova non
+verr� mai eseguita.
+ L'istruzione condizionale non avr� effetto su <function>require</function>.
+Comunque,
+ se la riga su cui si verifica <function>require</function> non viene eseguita,
+ non sar� eseguito nemmeno il codice del file incluso. Similmente, le strutture
+ cicliche non avranno effetto sul comportamento di <function>require</function>.
+Sebbene
+ il codice contenuto nel file incluso � ancora soggetto a ciclo,
+ <function>require</function> stesso si verifica solo una volta.
+ </simpara>
+ </note>
<simpara>
- See also <function>include</function>, <function>require_once</function>,
- <function>include_once</function>, <function>readfile</function>,
- and <function>virtual</function>.
+ Vedere anche <function>include</function>, <function>require_once</function>,
+ <function>include_once</function>, <function>eval</function>,
+ <function>file</function>, <function>readfile</function>,
+ <function>virtual</function> e <link
+linkend="ini.include-path">include_path</link>.
</simpara>
</sect1>
- <sect1 id="function.include">
+ <sect1 id="function.include">
<title><function>include</function></title>
<simpara>
- The <function>include</function> statement includes and evaluates
- the specified file.
- </simpara>
- <simpara>
- If "URL fopen wrappers" are enabled in PHP (which they are in the
- default configuration), you can specify the file to be
- <function>include</function>ed using an URL instead of a local
- pathname. See <link linkend="features.remote-files">Remote
- files</link> and <function>fopen</function> for more information.
+ L'istruzione <function>include</function> include e valuta
+ il file specificato.
</simpara>
<simpara>
- An important note about how this works is that when a file is
- <function>include</function>ed or <function>require</function>ed,
- parsing drops out of PHP mode and into HTML mode at the beginning
- of the target file, and resumes again at the end. For this reason,
- any code inside the target file which should be executed as PHP
- code must be enclosed within <link
- linkend="language.basic-syntax.phpmode">valid PHP start and end
- tags</link>.
+ La documentazione seguente si applica anche a <function>require</function>.
+ I due costrutti sono identici in ogni aspetto eccetto per come essi trattano
+ gli errori. <function>include</function> produce un
+ <link linkend="internal.e-warning">Warning</link> mentre
+<function>require</function>
+ restituisce un <link linkend="internal.e-error">Fatal Error</link>.
+ In altre parole, usate <function>require</function> se volete che
+ un file mancante fermi l'esecuzione della pagina. <function>include</function>
+ non si comporta in questo modo, lo script continuer� nonostante tutto.
+Assicuratevi di avere un
+ appropriato <link linkend="ini.include-path">include_path</link> impostato a
+dovere.
+ </simpara>
+ <simpara>
+ Quando un file viene incluso, il codice che esso contiene eredita lo
+ <link linkend="language.variables.scope">scope delle variabili</link> della
+ riga in cui si verifica l'inclusione. Qualsiasi variabile disponibile in quella
+riga
+ nella chiamata al file sar� disponibile all'interno del file chiamato, da
+ quel punto in avanti.
</simpara>
<para>
- This happens each time the <function>include</function> statement
- is encountered, so you can use an <function>include</function>
- statement within a looping structure to include a number of
- different files.
- <informalexample>
- <programlisting role="php">
-<![CDATA[
-$files = array ('first.inc', 'second.inc', 'third.inc');
-for ($i = 0; $i < count($files); $i++) {
- include $files[$i];
-}
-]]>
- </programlisting>
- </informalexample>
- </para>
- <para>
- <function>include</function> differs from
- <function>require</function> in that the include statement is
- re-evaluated each time it is encountered (and only when it is
- being executed), whereas the <function>require</function>
- statement is replaced by the required file when it is first
- encountered, whether the contents of the file will be evaluated or
- not (for example, if it is inside an <link
- linkend="control-structures.if">if</link> statement whose
- condition evaluated to &false;).
- </para>
- <para>
- Because <function>include</function> is a special language
- construct, you must enclose it within a statement block if it is
- inside a conditional block.
- <informalexample>
- <programlisting role="php">
+ <example>
+ <title>Esempio di base con <function>include</function></title>
+ <programlisting role="php">
<![CDATA[
-/* This is WRONG and will not work as desired. */
+vars.php
+<?php
-if ($condition)
- include($file);
-else
- include($other);
+$colore = 'verde';
+$frutto = 'mela';
-/* This is CORRECT. */
+?>
-if ($condition) {
- include($file);
-} else {
- include($other);
-}
+test.php
+<?php
+
+echo "Una $frutto $colore"; // Una
+
+include 'vars.php';
+
+echo "Una $frutto $colore"; // Una mela verde
+
+?>
]]>
- </programlisting>
- </informalexample>
+ </programlisting>
+ </example>
</para>
<simpara>
- In both PHP 3 and PHP 4, it is possible to execute a
- <literal>return</literal> statement inside an
- <function>include</function>ed file, in order to terminate
- processing in that file and return to the script which called
- it. Some differences in the way this works exist, however. The
- first is that in PHP 3, the <literal>return</literal> may not
- appear inside a block unless it's a function block, in which case
- the <literal>return</literal> applies to that function and not the
- whole file. In PHP 4, however, this restriction does not
- exist. Also, PHP 4 allows you to return values from
- <function>include</function>ed files. You can take the value of
- the <function>include</function> call as you would a normal
- function. This generates a parse error in PHP 3.
+ Se l'inclusione si verifica dentro una funzione all'interno del file chiamato,
+ allora tutto il codice contenuto nel file chiamato si comporter� come
+ se esso sia stato definito all'interno di una funzione. Cos�, esso seguir�
+ lo scope delle variabili di quella funzione.
</simpara>
- <example>
- <title><function>include</function> in PHP 3 and PHP 4</title>
- <para>
- Assume the existence of the following file (named
- <filename>test.inc</filename>) in the same directory as the main
- file:
- <programlisting role="php">
+ <para>
+ <example>
+ <title>Inclusione all'interno di funzioni</title>
+ <programlisting role="php">
<![CDATA[
<?php
-echo "Before the return <br>\n";
-if (1) {
- return 27;
+
+function foo()
+{
+global $frutto;
+
+ include 'vars.php';
+
+ echo "Una $frutto $colore";
}
-echo "After the return <br>\n";
-?>
-]]>
- </programlisting>
- </para>
- <para>
- Assume that the main file (<filename>main.html</filename>)
- contains the following:
- <programlisting role="php">
-<![CDATA[
-<?php
-$retval = include ('test.inc');
-echo "File returned: '$retval'<br>\n";
-?>
-]]>
- </programlisting>
- </para>
- <para>
- When <filename>main.html</filename> is called in PHP 3, it will
- generate a parse error on line 2; you can't take the value of an
- <function>include</function> in PHP 3. In PHP 4, however, the
- result will be:
- <screen>
-Before the return
-File returned: '27'
- </screen>
- </para>
- <para>
- Now, assume that <filename>main.html</filename> has been altered
- to contain the following:
- <programlisting role="php">
-<![CDATA[
-<?php
-include ('test.inc');
-echo "Back in main.html<br>\n";
+
+/* vars.php � nello scope di foo() cos� *
+ * $colore NON � disponibile fuori di *
+ * questo scope. $frutto si perch� � stato *
+ * dichiarato globale. */
+
+foo(); // Una mela verde
+echo "Una $frutto $colore"; // Una mela
+
?>
]]>
</programlisting>
- </para>
- <para>
- In PHP 4, the output will be:
- <screen>
-Before the return
-Back in main.html
- </screen>
- However, PHP 3 will give the following output:
- <screen>
-Before the return
-27Back in main.html
-
-Parse error: parse error in /home/torben/public_html/phptest/main.html on line 5
- </screen>
- </para>
- <para>
- The above parse error is a result of the fact that the
- <literal>return</literal> statement is enclosed in a non-function
- block within <filename>test.inc</filename>. When the return is
- moved outside of the block, the output is:
- <screen>
-Before the return
-27Back in main.html
- </screen>
- </para>
- <para>
- The spurious '27' is due to the fact that PHP 3 does not support
- <literal>return</literal>ing values from files like that.
- </para>
- </example>
+ </example>
+ </para>
<simpara>
- When a file is <function>include</function>ed, the code it
- contains inherits the variable scope of the line on which the
- <function>include</function> occurs. Any variables available at
- that line in the calling file will be available within the called
- file. If the <function>include</function> occurs inside a
- function within the calling file, then all of the code contained
- in the called file will behave as though it had been defined
- inside that function.
+ Quando un file viene incluso, il parsing esce dalla modalit� PHP e
+ entra in modalit� HTML all'inizio del file incluso, e riprende
+ alla fine. Per questa ragione, qualunque codice all'interno del
+ file incluso che dovrebbe essere eseguito come codice PHP deve essere incluso
+all'interno
+ dei <link linkend="language.basic-syntax.phpmode">tag PHP validi di apertura
+ e chiusura</link>.
+ </simpara>
+ <simpara>
+ Se "<link linkend="ini.allow-url-fopen">URL fopen wrappers</link>"
+ nel PHP sono abilitati (come nella configurazione di default),
+ potete specificare il file da includere usando un URL (via HTTP)
+ invece che un percorso locale. Se il server chiamato interpreta
+ il file incluso come codice PHP, le variabili possono essere passate
+ al file incluso usando una stringa di richiesta URL come con l'utilizzo di HTTP
+GET. Non �
+ proprio parlare della stessa cosa includere il file e averlo
+ ereditato dallo scope di variabili del file chiamante; lo script � stato
+attualmente
+ eseguito su un server remoto e il risultato � poi stato
+ incluso nello script locale.
</simpara>
<para>
- If the <function>include</function>ed file is called via HTTP
- using the fopen wrappers, and if the target server interprets the
- target file as PHP code, variables may be passed to the
- <function>include</function>ed file using an URL request string as
- used with HTTP GET. This is not strictly speaking the same thing
- as <function>include</function>ing the file and having it inherit
- the parent file's variable scope; the script is actually being run
- on the remote server and the result is then being included into
- the local script.
- <informalexample>
+ <example>
+ <title><function>include</function> attraverso HTTP</title>
<programlisting role="php">
<![CDATA[
-/* This example assumes that someserver is configured to parse .php
- * files and not .txt files. Also, 'works' here means that the variables
- * $varone and $vartwo are available within the include()ed file. */
-
-/* Won't work; file.txt wasn't handled by someserver. */
-include ("http://someserver/file.txt?varone=1vartwo=2");
-
-/* Won't work; looks for a file named 'file.php?varone=1&vartwo=2'
- * on the local filesystem. */
-include ("file.php?varone=1&vartwo=2");
+<?php
-/* Works. */
-include ("http://someserver/file.php?varone=1&vartwo=2");
+/* Questo esempio assume che www.example.com � configurato per eseguire file *
+ * .php e non file .txt. Anche, 'Funziona' qui significa che le variabili *
+ * $foo e $bar sono disponibili all'interno del file incluso. */
+
+// Non funzioner�; file.txt non � stato trattato da www.example.com come PHP
+include 'http://www.example.com/file.txt?foo=1&bar=2';
+
+// Non funzioner�; cercare un file chiamato'file.php?foo=1&bar=2' nel
+// filesystem locale.
+include 'file.php?foo=1&bar=2';
+
+// Funziona.
+include 'http://www.example.com/file.php?foo=1&bar=2';
+
+$foo = 1;
+$bar = 2;
+include 'file.txt'; // Funziona.
+include 'file.php'; // Funziona.
-$varone = 1;
-$vartwo = 2;
-include ("file.txt"); /* Works. */
-include ("file.php"); /* Works. */
+?>
]]>
</programlisting>
- </informalexample>
+ </example>
+ Vedere anche <link linkend="features.remote-files">Remote files</link>,
+ <function>fopen</function> e <function>file</function> per informazioni
+ correlate.
</para>
- <simpara>
- See also <function>require</function>, <function>require_once</function>,
- <function>include_once</function>, <function>readfile</function>,
- and <function>virtual</function>.
- </simpara>
- </sect1>
-
- <sect1 id="function.require-once">
- <title><function>require_once</function></title>
<para>
- The <function>require_once</function> statement replaces
- itself with the specified file, much like the C preprocessor's
- <literal>#include</literal> works, and in that respect is
- similar to the <function>require</function> statement. The main
- difference is that in an inclusion chain, the use of
- <function>require_once</function> will assure that the code is
- added to your script only once, and avoid clashes with variable
- values or function names that can happen.
+ Poich� <function>include</function> e <function>require</function>
+ sono speciali costrutti di linguaggio, dovete includerli all'interno di
+ blocchi di istruzioni se si trovano in un blocco condizionale.
</para>
<para>
- For example, if you create the following 2 include files
- <literal>utils.inc</literal> and <literal>foolib.inc</literal>
- <example>
- <title>utils.inc</title>
+ <example>
+ <title>include() e i blocchi condizionali</title>
<programlisting role="php">
<![CDATA[
<?php
-define("PHPVERSION", floor(phpversion()));
-echo "GLOBALS ARE NICE\n";
-function goodTea()
-{
- return "Oolong tea tastes good!";
+
+// Questo NON VA BENE e non funzioner� come desiderato.
+if ($condizione)
+ include $file;
+else
+ include $un_altro;
+
+
+// Questo � CORRETTO.
+if ($condizione) {
+ include $file;
+} else {
+ include $un_altro;
}
+
?>
]]>
</programlisting>
- </example>
- <example>
- <title>foolib.inc</title>
- <programlisting role="php">
+ </example>
+ </para>
+ <simpara>
+ Trattamento dei valori restituiti: � possibile eseguire un'istruzione
+<function>return</function>
+ in un file incluso per terminare l'esecuzione di quel
+ file e restituirlo allo script che l'ha chiamato. � anche possibile restituire
+ valori dai file inclusi. Potete prendere il valore di una chiamata di inclusione
+come
+ fareste con una normale funzione.
+ </simpara>
+ <note>
+ <simpara>
+ In PHP 3, return potrebbe non apparire in un blocco a meno che esso sia
+ un blocco di funzione, nel qual caso <function>return</function> si applica
+ a quella funzione e non all'intero file.
+ </simpara>
+ </note>
+ <para>
+ <example>
+ <title><function>include</function> and the <function>return</function>
+statement</title>
+ <programlisting role="php">
<![CDATA[
+return.php
<?php
-require ("utils.inc");
-function showVar($var)
-{
- if (PHPVERSION == 4) {
- print_r($var);
- } else {
- var_dump($var);
- }
-}
-// bunch of other functions ...
+$var = 'PHP';
+
+return $var;
+
?>
-]]>
- </programlisting>
- </example>
- And then you write a script <literal>cause_error_require.php</literal>
- <example>
- <title>cause_error_require.php</title>
- <programlisting role="php">
-<![CDATA[
+
+noreturn.php
<?php
-require("foolib.inc");
-/* the following will generate an error */
-require("utils.inc");
-$foo = array("1",array("complex","quaternion"));
-echo "this is requiring utils.inc again which is also\n";
-echo "required in foolib.inc\n";
-echo "Running goodTea: ".goodTea()."\n";
-echo "Printing foo: \n";
-showVar($foo);
+
+$var = 'PHP';
+
?>
-]]>
- </programlisting>
- </example>
- When you try running the latter one, the resulting ouptut will be (using
- PHP 4.01pl2):
- <informalexample>
- <screen>
-<![CDATA[
-GLOBALS ARE NICE
-GLOBALS ARE NICE
-Fatal error: Cannot redeclare goodTea() in utils.inc on line 5
-]]>
- </screen>
- </informalexample>
- By modifying <literal>foolib.inc</literal> and
- <literal>cause_errror_require.php</literal>
- to use <function>require_once</function>
- instead of <function>require</function> and renaming the
- last one to <literal>avoid_error_require_once.php</literal>, we have:
- <example>
- <title>foolib.inc (fixed)</title>
- <programlisting role="php">
-<![CDATA[
-...
-require_once("utils.inc");
-function showVar($var)
-{
-...
-]]>
- </programlisting>
- </example>
- <example>
- <title>avoid_error_require_once.php</title>
- <programlisting role="php">
-<![CDATA[
-...
-require_once("foolib.inc");
-require_once("utils.inc");
-$foo = array("1",array("complex","quaternion"));
-...
-]]>
- </programlisting>
- </example>
- And when running the latter, the output will be (using PHP 4.0.1pl2):
- <informalexample>
- <screen>
-<![CDATA[
-GLOBALS ARE NICE
-this is requiring globals.inc again which is also
-required in foolib.inc
-Running goodTea: Oolong tea tastes good!
-Printing foo:
-Array
-(
- [0] => 1
- [1] => Array
- (
- [0] => complex
- [1] => quaternion
- )
+testreturns.php
+<?php
-)
+$foo = include 'return.php';
+
+echo $foo; // stampa 'PHP'
+
+$bar = include 'noreturn.php';
+
+echo $bar; // stampa 1
+
+?>
]]>
- </screen>
- </informalexample>
- </para>
- <para>
- Also note that, analogous to the behavior of the
- <literal>#include</literal> of the C preprocessor, this statement
- acts at "compile time", e.g. when the script is parsed and before it
- is executed, and should not be used for parts of the script that need
- to be inserted dynamically during its execution. You should use
- <function>include_once</function> or <function>include</function>
- for that purpose.
+ </programlisting>
+ </example>
</para>
+ <simpara>
+ <literal>$bar</literal> ha valore <literal>1</literal> perch� l'inclusione
+ � stata eseguita con successo. Notare la differenza tra gli esempi sopra. Il
+primo usa
+ <function>return</function> all'interno di un file incluso mentre l'altro no.
+ Pochi altri modi di "includere" file in variabili sono con
+ <function>fopen</function>, <function>file</function> o usando
+ <function>include</function> insieme con
+ <link linkend="ref.outcontrol">Output Control Functions</link>.
+ </simpara>
+
+ <simpara>
+ Vedere anche <function>require</function>, <function>require_once</function>,
+ <function>include_once</function>, <function>readfile</function>,
+ <function>virtual</function>, e
+ <link linkend="ini.include-path">include_path</link>.
+ </simpara>
+
+</sect1>
+
+ <sect1 id="function.require-once">
+ <title><function>require_once</function></title>
<para>
- For more examples on using <function>require_once</function> and
- <function>include_once</function>, look at the PEAR code included in
- the latest PHP source code distributions.
+ L'istruzione <function>require_once</function> include e valuta
+ il file specificato durante l'esecuzione dello script.
+ � un comportamento simile all'istruzione <function>require</function>,
+ con la sola differenza che se il codice di un file � stato
+ gi� incluso, esso non sar� incluso nuovamente. Vedere la documentazione di
+ <function>require</function> per maggiori informazioni su come funziona
+ quest'istruzione.
+ </para>
+ <para>
+ <function>require_once</function> dovrebbe essere usato nei casi dove
+ lo stesso file potrebbe essere incluso e valutato pi� di una volta durante
+ una particolare esecuzione di uno script, e volete essere sicuri che esso sia
+ incluso esattamente una volta per evitare problemi con la ridefinizione di
+funzioni,
+ riassegnazione di valori a variabili, etc.
+ </para>
+ <para>
+ Per esempi sull'utilizzo di <function>require_once</function> e
+ <function>include_once</function>, consultare il codice
+ <ulink url="&url.php.pear;">PEAR</ulink> incluso
+ nell'ultima distribuzione del codice sorgente di PHP.
</para>
+ <note>
+ <para>
+ <function>require_once</function> � stato aggiunto in PHP 4.0.1pl2
+ </para>
+ </note>
<para>
- See also: <function>require</function>,
+ Vedere anche: <function>require</function>,
<function>include</function>, <function>include_once</function>,
<function>get_required_files</function>,
<function>get_included_files</function>, <function>readfile</function>,
- and <function>virtual</function>.
+ e <function>virtual</function>.
</para>
</sect1>
- <sect1 id="function.include-once">
+ <sect1 id="function.include-once">
<title><function>include_once</function></title>
<para>
- The <function>include_once</function> statement includes and evaluates
- the specified file during the execution of the script.
- This is a behavior similar to the <function>include</function> statement,
- with the important difference that if the code from a file has already
- been included, it will not be included again.
- </para>
- <para>
- As mentioned in the <function>require_once</function> description, the
- <function>include_once</function> should be used in the cases in which
- the same file might be included and evaluated more than once during a
- particular execution of a script, and you want to be sure that it is
- included exactly once to avoid problems with function redefinitions,
- variable value reassignments, etc.
- </para>
- <para>
- For more examples on using <function>require_once</function> and
- <function>include_once</function>, look at the PEAR code included in
- the latest PHP source code distributions.
- </para>
- <para>
- <function>include_once</function> was added in PHP 4.0.1pl2
+ L'istruzione <function>include_once</function> include e valuta
+ il file specificato durante l'esecuzione dello script.
+ � un comportamento simile all'istruzione <function>include</function>,
+ con la sola differenza che se il codice di un file � stato
+ gi� incluso, esso non sar� incluso nuovamente. Come suggerisce il nome,
+ esso sar� incluso solo una volta.
+ </para>
+ <para>
+ <function>include_once</function> dovrebbe essere usato nei casi dove
+ lo stesso file potrebbe essere incluso e valutato pi� di una volta durante
+ una particolare esecuzione di uno script, e volete essere sicuri che esso sia
+ incluso esattamente una volta per evitare problemi con la ridefinizione di
+funzioni,
+ riassegnazione di valori a variabili, etc.
+ </para>
+ <para>
+ Per maggiori esempi sull'utilizzo di <function>require_once</function> e
+ <function>include_once</function>, consultare il codice
+ <ulink url="&url.php.pear;">PEAR</ulink> incluso
+ nell'ultima distribuzione del codice sorgente di PHP.
</para>
+ <note>
+ <para>
+ <function>include_once</function> � stato aggiunto in PHP 4.0.1pl2
+ </para>
+ </note>
<para>
- See also: <function>require</function>,
- <function>include</function>, <function>require_once</function>,
+ Vedere anche <function>include</function>,
+ <function>require</function>, <function>require_once</function>,
<function>get_required_files</function>,
<function>get_included_files</function>, <function>readfile</function>,
- and <function>virtual</function>.
+ e <function>virtual</function>.
</para>
</sect1>