Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions language/control-structures/else.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 690c3ea7c7d416c55e2c54d90bfd1f7f4d489288 Maintainer: lacatoire Status: ready -->

<sect1 xml:id="control-structures.else" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>else</title>
<?phpdoc print-version-for="else"?>
<para>
Spesso si desidera eseguire un'istruzione se una certa condizione è
soddisfatta, e un'istruzione diversa se la condizione non è soddisfatta. Questo
è lo scopo di <literal>else</literal>. <literal>else</literal>
estende un'istruzione <literal>if</literal> per eseguire un'istruzione
nel caso in cui l'espressione nell'istruzione <literal>if</literal>
venga valutata come &false;. Ad esempio, il seguente
codice visualizzerebbe <computeroutput>a is greater than
b</computeroutput> se <varname>$a</varname> è maggiore di
<varname>$b</varname>, e <computeroutput>a is NOT greater
than b</computeroutput> altrimenti:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is NOT greater than b";
}
?>
]]>
</programlisting>
</informalexample>

L'istruzione <literal>else</literal> viene eseguita solo se l'espressione
<literal>if</literal> è stata valutata come
&false;, e se ci sono
espressioni <literal>elseif</literal> - solo se anch'esse sono state valutate come
&false; (vedere <link
linkend="control-structures.elseif">elseif</link>).

</para>
<note>
<title>Else pendente</title>
<para>
Nel caso di istruzioni <literal>if</literal>-<literal>else</literal> annidate,
un <literal>else</literal> è sempre associato all'<literal>if</literal> più vicino.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$a = false;
$b = true;
if ($a)
if ($b)
echo "b";
else
echo "c";
?>
]]>
</programlisting>
</informalexample>
Nonostante l'indentazione (che non ha importanza per PHP), l'<literal>else</literal>
è associato all'<literal>if ($b)</literal>, quindi l'esempio non produce
alcun output. Anche se affidarsi a questo comportamento è valido, si raccomanda di
evitarlo utilizzando le parentesi graffe per risolvere potenziali ambiguità.
</para>
</note>
</sect1>

<!-- 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
-->
94 changes: 94 additions & 0 deletions language/control-structures/if.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7104ee97ced1768a3231588dfc0bc0d7eb1117ad Maintainer: lacatoire Status: ready -->

<sect1 xml:id="control-structures.if" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>if</title>
<?phpdoc print-version-for="if"?>
<para>
Il costrutto <literal>if</literal> è una delle funzionalità più importanti
di molti linguaggi, PHP incluso. Permette l'esecuzione
condizionale di frammenti di codice. PHP presenta una struttura
<literal>if</literal> simile a quella del C:
<informalexample>
<programlisting>
<![CDATA[
if (expr)
statement
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Come descritto nella <link linkend="language.expressions">sezione sulle
espressioni</link>, l'<replaceable>espressione</replaceable> viene valutata per il suo
valore booleano. Se l'<replaceable>espressione</replaceable> viene valutata come &true;,
PHP eseguirà l'<replaceable>istruzione</replaceable>, e se viene valutata
come &false; - la ignorerà. Maggiori informazioni su quali valori vengono valutati
come &false; si trovano nella sezione <link
linkend="language.types.boolean.casting">'Conversione in boolean'</link>.
</simpara>
<para>
Il seguente esempio visualizzerebbe <computeroutput>a is bigger
than b</computeroutput> se <varname>$a</varname> è maggiore
di <varname>$b</varname>:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($a > $b)
echo "a is bigger than b";
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
Spesso si desidera che più di un'istruzione venga eseguita
condizionalmente. Naturalmente, non è necessario racchiudere ogni istruzione
in una clausola <literal>if</literal>. È possibile invece raggruppare
diverse istruzioni in un blocco di istruzioni. Ad esempio, questo codice
visualizzerebbe <computeroutput>a is bigger than b</computeroutput>
se <varname>$a</varname> è maggiore di
<varname>$b</varname>, e poi assegnerebbe il valore di
<varname>$a</varname> a <varname>$b</varname>:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($a > $b) {
echo "a is bigger than b";
$b = $a;
}
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Le istruzioni <literal>if</literal> possono essere annidate all'infinito all'interno di altre
istruzioni <literal>if</literal>, il che offre completa
flessibilità per l'esecuzione condizionale delle varie parti del
programma.
</simpara>
</sect1>

<!-- 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
-->
46 changes: 46 additions & 0 deletions language/control-structures/include-once.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 89d80c92a1154a2903fff371f0d056bf2ac8ba27 Maintainer: lacatoire Status: ready -->

<sect1 xml:id="function.include-once" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>include_once</title>
<?phpdoc print-version-for="include_once"?>
<para>
L'espressione <literal>include_once</literal> include e valuta
il file specificato durante l'esecuzione dello script.
Questo è un comportamento simile all'espressione <function>include</function>,
con l'unica differenza che se il codice di un file è già stato
incluso, non verrà incluso di nuovo, e include_once restituisce &true;. Come suggerisce il nome,
il file verrà incluso una sola volta.
</para>
<para>
<literal>include_once</literal> può essere utilizzato nei casi in cui
lo stesso file potrebbe essere incluso e valutato più di una volta durante una
particolare esecuzione di uno script, quindi in questo caso può aiutare ad evitare
problemi come ridefinizioni di funzioni, riassegnazioni di valori di variabili, ecc.
</para>
<para>
Vedere la documentazione di <function>include</function> per informazioni su
come funziona questa espressione.
</para>
</sect1>

<!-- 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
-->
80 changes: 80 additions & 0 deletions language/control-structures/return.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: db7aa4f29bd5909f8ab9e3739f60afb77837e4df Maintainer: lacatoire Status: ready -->

<sect1 xml:id="function.return" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>return</title>
<?phpdoc print-version-for="return"?>
<simpara>
<literal>return</literal> restituisce il controllo del programma al modulo chiamante.
L'esecuzione riprende dall'espressione successiva alla chiamata del modulo.
</simpara>
<simpara>
Se chiamato dall'interno di una funzione, l'istruzione <literal>return</literal>
termina immediatamente l'esecuzione della funzione corrente e
restituisce il suo argomento come valore della chiamata
di funzione. <literal>return</literal> termina anche l'esecuzione di
un'istruzione <function>eval</function> o di un file di script.
</simpara>
<simpara>
Se chiamato dall'ambito globale, l'esecuzione del file di script
corrente viene terminata. Se il file di script corrente era stato
incluso con <function>include</function> o <function>require</function>,
il controllo viene restituito al file chiamante. Inoltre, se
il file di script corrente era stato incluso con <function>include</function>,
il valore passato a <literal>return</literal> verrà restituito come
valore della chiamata a <function>include</function>. Se
<literal>return</literal> viene chiamato dall'interno del file di script
principale, l'esecuzione dello script termina. Se il file di script corrente
era stato indicato dalle opzioni di configurazione <link
linkend="ini.auto-prepend-file">auto_prepend_file</link> o <link
linkend="ini.auto-append-file">auto_append_file</link>
in &php.ini;,
l'esecuzione di quel file di script viene terminata.
</simpara>
<simpara>Per maggiori informazioni, vedere <link
linkend="functions.returning-values">Restituire valori</link>.
</simpara>
<para>
<note>
<simpara>
Si noti che poiché <literal>return</literal> è un costrutto del
linguaggio e non una funzione, le parentesi che circondano il suo
argomento non sono necessarie e il loro uso è sconsigliato.
</simpara>
</note>
<note>
<simpara>
Se non viene fornito alcun parametro, le parentesi devono essere omesse
e verrà restituito &null;. Chiamare <literal>return</literal> con le parentesi ma
senza argomenti risulterà in un errore di parsing.
</simpara>
</note>
</para>

<para>
A partire da PHP 7.1.0, le istruzioni return senza argomento in funzioni che dichiarano un tipo di ritorno generano <constant>E_COMPILE_ERROR</constant>,
a meno che il tipo di ritorno non sia <type>void</type>, nel qual caso le istruzioni return
con un argomento generano quell'errore.
</para>
</sect1>

<!-- 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
-->