cortesi Tue May 28 20:24:01 2002 EDT
Modified files:
/phpdoc-it/language functions.xml
Log:
adding translation by Marco Spisto
Index: phpdoc-it/language/functions.xml
diff -u /dev/null phpdoc-it/language/functions.xml:1.5
--- /dev/null Tue May 28 20:24:01 2002
+++ phpdoc-it/language/functions.xml Tue May 28 20:24:01 2002
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- EN-Revision: 1.27 Maintainer: spisto Status: ready -->
+ <chapter id="functions">
+ <title>Funzioni</title>
+
+ <sect1 id="functions.user-defined">
+ <title>Funzioni definite dall'utente</title>
+
+ <para>
+ Una funzione pu� essere definita usando la seguente sintassi:
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function foo ($arg_1, $arg_2, ..., $arg_n)
+{
+ echo "Funzione di esempio.\n";
+ return $retval;
+}
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <!--
+
+ status of func(const $param) ?
+ zend doesn't care at all whether or not you specify it.
+ I've never seen it before... what's its use? (or was...)
+
+ -->
+
+ <simpara>
+ All'interno di una funzione pu� apparire qualunque codice PHP valido, persino
+altre
+ funzioni e definizioni di
+ <link linkend="keyword.class">classe</link>.
+ </simpara>
+ <simpara>
+ In PHP 3, le funzioni devono essere definite prima di essere referenziate.
+ Non esiste nessun requisito in PHP 4.
+ </simpara>
+ <simpara>
+ PHP non supporta l'overloading di funzioni, non � possibile
+ indefinire o ridefinire funzioni precedentemente dichiarate.
+ </simpara>
+ <simpara>
+ PHP 3 non supporta un numero variabile di argomenti per le funzioni,
+ sebbene siano supportati gli argomenti di default (vedere <link
+ linkend="functions.arguments.default">Argomenti con valori
+ di default</link> per maggiori informazioni). PHP 4 li supporta entrambi: vedere
+<link
+ linkend="functions.variable-arg-list">Liste di argomenti
+ a lunghezza variabile</link> e i riferimenti alle funzioni
+ <function>func_num_args</function>,
+ <function>func_get_arg</function> e
+ <function>func_get_args</function> per maggiori informazioni.
+ </simpara>
+
+ </sect1>
+
+ <sect1 id="functions.arguments">
+ <title>Argomenti delle funzioni</title>
+
+ <simpara>
+ L'informazione pu� essere passata alle funzioni tramite la lista degli argomenti,
+ che sono liste di variabili e/o costanti delimitati dalla virgola.
+ </simpara>
+ <para>
+ PHP supporta il passaggio di argomenti per valore (comportamento di default),
+<link
+ linkend="functions.arguments.by-reference">il passaggio
+ per riferimento</link>, e <link
+ linkend="functions.arguments.default">i valori di default
+ degli argomenti</link>. Le liste di argomenti di lunghezza varabile sono
+supportate solo
+ in PHP 4 e successivi; vedere <link
+ linkend="functions.variable-arg-list">Liste di argomenti
+ a lunghezza variabile</link> e i riferimenti alle funzioni
+ <function>func_num_args</function>,
+ <function>func_get_arg</function>, e
+ <function>func_get_args</function> per maggiori informazioni. Un
+ effetto simile pu� essere ottenuto in PHP 3 passando una array
+ di argomenti alla funzione.
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function prende_array($input)
+{
+ echo "$input[0] + $input[1] = ", $input[0]+$input[1];
+}
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <sect2 id="functions.arguments.by-reference">
+ <title>Costruire argomenti passati per riferimento</title>
+
+ <simpara>
+ Di default, gli argomenti della funzione sono passati per valore (cos� se
+ cambiate il valore dell'argomento all'interno della funzione , esso non
+ cambier� fuori della funzione). Se volete permettere ad una
+ funzione di modificare i suoi argomenti, dovete passarli
+ per riferimento.
+ </simpara>
+ <para>
+ Se volete che una argomento sia passato sempre per riferimento ad una funzione,
+ dovete anteporre un ampersand (&) al nome
+ dell'argomento nella definizione della funzione:
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function aggiungi_qualcosa(&$string)
+{
+ $string .= 'e qualche altra cosa.';
+}
+$str = 'Questa � una stringa, ';
+aggiungi_qualcosa($str);
+echo $str; // l'output sar� 'Questa � una stringa, e qualche altra cosa.'
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ </sect2>
+
+ <sect2 id="functions.arguments.default">
+ <title>Valori predefiniti degli argomenti</title>
+
+ <para>
+ Una funzione pu� definire valori predefiniti in stile C++ per
+ argomenti scalari come segue:
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function fare_il_caffe ($tipo = "cappuccino")
+{
+ return "Sto facendo una tazza di $tipo.\n";
+}
+echo fare_il_caffe ();
+echo fare_il_caffe ("espresso");
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <para>
+ L'output dal frammento di sopra �:
+
+ <screen>
+Sto facendo una tazza di cappuccino.
+Sto facendo una tazza di espresso.
+ </screen>
+ </para>
+
+ <simpara>
+ Il valore predefinito deve essere un'espressione costante, non (per
+ esempio) una variabile o un membro di classe.
+ </simpara>
+ <para>
+ Da notare che quando vengono usati argomenti predefiniti, qualunque argomento
+predefinito dovrebbe essere
+ a destra degli argomenti non-predefiniti; diversamente, le cose
+ non funzioneranno come ci si aspetti. Si consideri il seguente frammento di
+codice:
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function fare_lo_yogurt ($tipo = "yogurt", $gusto)
+{
+ return "Fare una vaschetta di $tipo a $gusto.\n";
+}
+
+echo fare_lo_yogurt ("fragola"); // non funziona come si aspetta
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <para>
+ L'output dell'esempio di sopra �:
+
+ <screen>
+Warning: Missing argument 2 in call to fare_lo_yogurt() in
+/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
+Fare una vaschetta di fragola a.
+ </screen>
+ </para>
+
+ <para>
+ Ora, si confronti il codice di sopra con questo:
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function fare_lo_yogurt ($gusto, $tipo = "yogurt")
+{
+ return "Fare una vaschetta di $tipo a $gusto.\n";
+}
+
+echo fare_lo_yogurt ("fragola"); // funziona come si aspetta
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <para>
+ L'output di questo esempio �:
+
+ <screen>
+Fare una vaschetta di yogurt a fragola.
+ </screen>
+ </para>
+
+ </sect2>
+
+ <sect2 id="functions.variable-arg-list">
+ <title>Liste di argomenti a lunghezza variabile</title>
+
+ <simpara>
+ PHP 4 ha il supporto per le liste di argomenti a lunghezza variabile nelle
+ funzioni definite dall'utente. Ci� � realmente abbastanza semplice, usando le
+funzioni
+ <function>func_num_args</function>,
+ <function>func_get_arg</function>, e
+ <function>func_get_args</function>.
+ </simpara>
+
+ <simpara>
+ Non � richiesta una speciale sintassi, e le liste di argomenti possono ancora
+essere
+ provviste esplicitamente con le definizioni di funzioni e si comporteranno
+ normalmente.
+ </simpara>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="functions.returning-values">
+ <title>Valori restituiti</title>
+
+ <para>
+ I valori vengono restituiti usando l'istruzione opzionale return. Pu�
+ essere restituito qualsiasi tipo, incluse liste ed oggetti. Ci� provoca
+ l'interruzione dell'esecuzione della funzione immediatamente e la restituzione
+del controllo
+ alla linea da cui � stata chiamata. Vedere <function>return</function>
+ per maggiori informazioni.
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function quadrato ($num)
+{
+ return $num * $num;
+}
+echo quadrato (4); // L'output � '16'.
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <para>
+ Non possono essere restituiti valori multipli da una funzione, ma
+ risultati simili possono essere ottenuti restituendo una lista.
+
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function numeri_piccoli()
+{
+ return array (0, 1, 2);
+}
+list ($zero, $uno, $due) = numeri_piccoli();
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <para>
+ Per restituire un riferimento da una funzione, � necessario usare
+ l'operatore di passaggio per riferimento & in entrambe le dichiarazioni di
+funzioni e
+ quando viene assegnato il valore restituito ad una variabile:
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+function &restituisce_riferimento()
+{
+ return $un_riferimento;
+}
+
+$nuovo_riferimento =& restituisce_riferimento();
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Per maggiori informazioni sui riferimenti, consultare <link
+ linkend="language.references">References Explained</link>.
+ </simpara>
+ </sect1>
+
+ <sect1 id="functions.old-syntax">
+ <title><literal>old_function</literal></title>
+
+ <simpara>
+ L'istruzione <literal>old_function</literal> permette di
+ dichiarare una funzione usando una sintassi identica a PHP/FI2 (eccetto il
+ dover sostituire 'function' con 'old_function'.
+ </simpara>
+ <simpara>
+ Questa � una caratteristica deprecata, e dovrebbe essere usata solo da
+ convertitori PHP/FI2->PHP 3.
+ </simpara>
+ <warning>
+ <para>
+ Le funzioni dichiarate come <literal>old_function</literal> non possono essere
+ chiamate da codice interno di PHP. Tra le altre cose, questo significa
+ che non possono essere usate in funzioni come
+ <function>usort</function>, <function>array_walk</function>, e
+ <function>register_shutdown_function</function>. Si pu�
+ aggirare questa limitazione scrivendo una funzione contenitore (nel normale
+ stile di PHP 3) per chiamare la <literal>old_function</literal>.
+ </para>
+ </warning>
+
+ </sect1>
+
+ <sect1 id="functions.variable-functions">
+ <title>Funzioni variabili</title>
+
+ <para>
+ PHP supporta il concetto di funzioni variabili. Ci� significa che se
+ un nome di variabile ha le parentesi accodate ad esso, PHP cercher�
+ una funzione con lo stesso nome del valore della
+ variabile, e cercher� di eseguirla. Tra le altre cose, ci� puo essere
+ usato per implementare delle callbacks, tabelle di funzioni e cos� via.
+ </para>
+ <para>
+ Le funzioni variabili non funzionano con costrutti di linguaggio come
+ <function>echo</function>, <function>unset</function>,
+ <function>isset</function>, <function>empty</function> e
+ <function>include</function>. Ad ogni modo, il costrutto
+ <function>print</function> � un'eccezione e funzioner�.
+ Questa � una delle maggiori differenze tra le funzioni PHP e
+ i costrutti di linguaggio.
+ </para>
+ <para>
+ <example>
+ <title>Esempio di funzioni variabili</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+function foo()
+{
+ echo "In foo()<br>\n";
+}
+
+function bar($arg = '')
+{
+ echo "In bar(); l'argomento era '$arg'.<br>\n";
+}
+
+$func = 'foo';
+$func();
+$func = 'bar';
+$func('test');
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ Vedere anche <link linkend="language.variables.variable">
+ variabili variabili</link> e <function>function_exists</function>.
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+<!-- 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:"../../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
+-->