cvs: phpdoc-it /language operators.xml references.xml
| From: | Andrioli Darvin | Date: | Thu, 21 Jul 2005 12:37:18 +0000 |
| Subject: | cvs: phpdoc-it /language operators.xml references.xml | ||
| Groups: | php.doc.it | ||
| Request: | Send a blank email to doc-it+get-775@lists.php.net to get a copy of this message | ||
darvina Thu Jul 21 08:37:18 2005 EDT
Modified files:
/phpdoc-it/language operators.xml references.xml
Log:
Sync to En tree
http://cvs.php.net/diff.php/phpdoc-it/language/operators.xml?r1=1.11&r2=1.12&ty=u Index: phpdoc-it/language/operators.xml diff -u phpdoc-it/language/operators.xml:1.11 phpdoc-it/language/operators.xml:1.12 --- phpdoc-it/language/operators.xml:1.11 Tue Jun 21 16:30:53 2005 +++ phpdoc-it/language/operators.xml Thu Jul 21 08:37:16 2005 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- EN-Revision: 1.86 Maintainer: spisto Status: ready --> +<!-- EN-Revision: 1.94 Maintainer: spisto Status: ready --> <chapter id="language.operators"> <title>Operatori</title> <simpara> @@ -540,6 +540,96 @@ </informalexample> </para> <para> + Se i tipi di operarandi utilizzati differiscono, il confronto viene svolto + nell'ordine indicato della seguente tabella. + </para> + <table> + <title>Confronti con differenti tipi</title> + <tgroup cols="3"> + <thead> + <row> + <entry>Tipo dell'operando 1</entry> + <entry>Tipo dell'operando 2</entry> + <entry>Risultato</entry> + </row> + </thead> + <tbody> + <row> + <entry><type>null</type> oppure <type>string</type></entry> + <entry><type>string</type></entry> + <entry>Si converte &null; in "", confronto numerico o lessicale</entry> + </row> + <row> + <entry><type>bool</type> oppure <type>null</type></entry> + <entry>qualsiasi</entry> + <entry>Convertito in <type>bool</type>, &false; < &true;</entry> + </row> + <row> + <entry><type>object</type></entry> + <entry><type>object</type></entry> + <entry>Le classi predefinite possono avere la propria funzione di confronto, differenti classi + non sono confrontabili, classi uguali - hanno le medesime proprietà di confronto delle + matrici (PHP 4), pre il PHP 5 vedere <link + linkend="language.oop5.object-comparison">qui</link> per maggiori spiegazioni. + </entry> + </row> + <row> + <entry><type>string</type>, <type>resource</type> oppure <type>number</type></entry> + <entry><type>string</type>, <type>resource</type> oppure <type>number</type></entry> + <entry>Stringhe e risorse sono converti in numeri, confronto matematico</entry> + </row> + <row> + <entry><type>array</type></entry> + <entry><type>array</type></entry> + <entry>La matrice con meno membri è più piccola, se la chiave dell'operando 1 non si + trova nell'operando 2 allora le matrici non si possono confrontare, in altri casi + il confronto avviene valore per valore (vedere l'esempio seguente)</entry> + </row> + <row> + <entry><type>array</type></entry> + <entry>qualsiasi</entry> + <entry><type>array</type> è sempre più grande</entry> + </row> + <row> + <entry><type>object</type></entry> + <entry>qualsiasi</entry> + <entry><type>object</type> è sempre più grande</entry> + </row> + </tbody> + </tgroup> + </table> + <para> + <example> + <title>Trascrizione del confronto standard tra matrici</title> + <programlisting role="php"> +<![CDATA[ +<?php +// Le matrici vengono confrontate come illustrato in questa funzione +function standard_array_compare($op1, $op2) +{ + if (count($op1) < count($op2)) { + return -1; // $op1 < $op2 + } elseif (count($op1) > count($op2)) { + return 1; // $op1 > $op2 + } + foreach ($op1 as $key => $val) { + if (!array_key_exists($key, $op2)) { + return null; // uncomparable + } elseif ($val < $op2[$key]) { + return -1; + } elseif ($val > $op2[$key]) { + return 1; + } + } + return 0; // $op1 == $op2 +} +?> +]]> + </programlisting> + </example> + </para> + + <para> Vedere anche <function>strcasecmp</function>, <function>strcmp</function>, <link linkend="language.operators.array">Array operators</link>, @@ -576,6 +666,16 @@ <replaceable>espressione3</replaceable> se <replaceable>espressione1</replaceable> è &false;. </para> + <note> + <simpara> + Si noti che l'operatore ternario è un'istruzione, e non viene valutato + come variabile, ma come risultato di un'istruzione. Questo + è importante da sapere nel caso si desideri restituire una variabile per riferimento. + La riga <literal>return $var == 42 ? $a : $b;</literal> in una funzione + che restituisce per riferimento non funzionerà e, nelle ultime versioni di PHP, + genererà un warning. + </simpara> + </note> </sect2> </sect1> @@ -681,6 +781,13 @@ PHP supporta lo stile C degli operatori di pre- e post-incremento e decremento. </para> + <note> + <simpara> + Gli operatori di incremento e decremento non agiscono sui valori boolean. + Anche decrementare il valore &null; non ha effetti, ma incrementarlo + darà come risultato <literal>1</literal>. + </simpara> + </note> <table> <title>Operatori di incremento/decremento</title> <tgroup cols="3"> @@ -756,8 +863,8 @@ <![CDATA[ <?php $i = 'W'; -for($n=0; $n<6; $n++) - echo ++$i . "\n"; +for ($n=0; $n<6; $n++) + echo ++$i . "\n"; ]]> </programlisting> &example.outputs; http://cvs.php.net/diff.php/phpdoc-it/language/references.xml?r1=1.6&r2=1.7&ty=u Index: phpdoc-it/language/references.xml diff -u phpdoc-it/language/references.xml:1.6 phpdoc-it/language/references.xml:1.7 --- phpdoc-it/language/references.xml:1.6 Wed Jun 22 07:54:54 2005 +++ phpdoc-it/language/references.xml Thu Jul 21 08:37:16 2005 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- EN-Revision: 1.39 Maintainer: alan_dangelo Status: ready --> +<!-- EN-Revision: 1.43 Maintainer: alan_dangelo Status: ready --> <chapter id="language.references"> <title>Spiegazioni sui riferimenti</title> @@ -254,7 +254,9 @@ </informalexample> Nota che non si usa il segno di riferimento nella chiamata della funzione, ma solo nella definizione. La definizione della funzione basta da sola - per passare correttamente un argomento per riferimento. + per passare correttamente un argomento per riferimento. Nelle versioni recenti di PHP + si avrà un warning indicante che "Call-time pass-by-reference" è + deprecato quando si usa & <literal>foo(&$a);</literal> . </para> <para> Le seguenti cose possono essere passate per riferimento: @@ -306,9 +308,9 @@ return $a; } -foo(bar()); +foo(bar()); // produce un errore fatale da PHP 5.1.0 foo($a = 5); // Expressione: non una variabile -foo(5); // Constante: non una variabile +foo(5); // Genera un errore fatale ?> ]]> </programlisting> @@ -321,7 +323,10 @@ <title>Restituzione per riferimento</title> <para> La restituzione per riferimento è utile quando si vuole usare una funzione - per trovare quale variabile un riferimento dovrebbe limitare. Per + per trovare quale variabile un riferimento dovrebbe limitare. + <emphasis>non</emphasis> utilizzare il ritorno per riferimento per incrementare le prestazioni, + l'engine è abbastanza abile da ottimizzare il codice per proprio conto. Restituire valori per riferimento + solo se si hanno validi motivi tecnici! Per restituire per riferimento, si usa questa sintassi: <informalexample> <programlisting role="php"> @@ -350,8 +355,15 @@ si vuole restituire per riferimento, e non per copia come di consueto, e per indicare nella chiamata, il collegamento del riferimento, piuttosto che l'usuale assegnazione che verrebbe fatta per <varname>$foo</varname>. - <literal>&</literal> nella definizione delle funzioni è opzionale nei metodi delle - <link linkend="keyword.class">classi</link>. + </simpara> + </note> + <note> + <simpara> + Se si tenta di restituire un valore per riferimento da una funzione con la sintassi: + <literal>return ($found_var);</literal> questo <emphasis>non</emphasis> funzionerà + poichè si sta tntando di restituire per riferimento il risultato di un' + <emphasis>espressione</emphasis>, e non una variabile. Da una funzione, si possono restituire + per riferimento solo le variabili. </simpara> </note> </sect1>
http://cvs.php.net/diff.php/phpdoc-it/language/operators.xml?r1=1.11&r2=1.12&ty=u Index: phpdoc-it/language/operators.xml diff -u phpdoc-it/language/operators.xml:1.11 phpdoc-it/language/operators.xml:1.12 --- phpdoc-it/language/operators.xml:1.11 Tue Jun 21 16:30:53 2005 +++ phpdoc-it/language/operators.xml Thu Jul 21 08:37:16 2005 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- EN-Revision: 1.86 Maintainer: spisto Status: ready --> +<!-- EN-Revision: 1.94 Maintainer: spisto Status: ready --> <chapter id="language.operators"> <title>Operatori</title> <simpara> @@ -540,6 +540,96 @@ </informalexample> </para> <para> + Se i tipi di operarandi utilizzati differiscono, il confronto viene svolto + nell'ordine indicato della seguente tabella. + </para> + <table> + <title>Confronti con differenti tipi</title> + <tgroup cols="3"> + <thead> + <row> + <entry>Tipo dell'operando 1</entry> + <entry>Tipo dell'operando 2</entry> + <entry>Risultato</entry> + </row> + </thead> + <tbody> + <row> + <entry><type>null</type> oppure <type>string</type></entry> + <entry><type>string</type></entry> + <entry>Si converte &null; in "", confronto numerico o lessicale</entry> + </row> + <row> + <entry><type>bool</type> oppure <type>null</type></entry> + <entry>qualsiasi</entry> + <entry>Convertito in <type>bool</type>, &false; < &true;</entry> + </row> + <row> + <entry><type>object</type></entry> + <entry><type>object</type></entry> + <entry>Le classi predefinite possono avere la propria funzione di confronto, differenti classi + non sono confrontabili, classi uguali - hanno le medesime proprietà di confronto delle + matrici (PHP 4), pre il PHP 5 vedere <link + linkend="language.oop5.object-comparison">qui</link> per maggiori spiegazioni. + </entry> + </row> + <row> + <entry><type>string</type>, <type>resource</type> oppure <type>number</type></entry> + <entry><type>string</type>, <type>resource</type> oppure <type>number</type></entry> + <entry>Stringhe e risorse sono converti in numeri, confronto matematico</entry> + </row> + <row> + <entry><type>array</type></entry> + <entry><type>array</type></entry> + <entry>La matrice con meno membri è più piccola, se la chiave dell'operando 1 non si + trova nell'operando 2 allora le matrici non si possono confrontare, in altri casi + il confronto avviene valore per valore (vedere l'esempio seguente)</entry> + </row> + <row> + <entry><type>array</type></entry> + <entry>qualsiasi</entry> + <entry><type>array</type> è sempre più grande</entry> + </row> + <row> + <entry><type>object</type></entry> + <entry>qualsiasi</entry> + <entry><type>object</type> è sempre più grande</entry> + </row> + </tbody> + </tgroup> + </table> + <para> + <example> + <title>Trascrizione del confronto standard tra matrici</title> + <programlisting role="php"> +<![CDATA[ +<?php +// Le matrici vengono confrontate come illustrato in questa funzione +function standard_array_compare($op1, $op2) +{ + if (count($op1) < count($op2)) { + return -1; // $op1 < $op2 + } elseif (count($op1) > count($op2)) { + return 1; // $op1 > $op2 + } + foreach ($op1 as $key => $val) { + if (!array_key_exists($key, $op2)) { + return null; // uncomparable + } elseif ($val < $op2[$key]) { + return -1; + } elseif ($val > $op2[$key]) { + return 1; + } + } + return 0; // $op1 == $op2 +} +?> +]]> + </programlisting> + </example> + </para> + + <para> Vedere anche <function>strcasecmp</function>, <function>strcmp</function>, <link linkend="language.operators.array">Array operators</link>, @@ -576,6 +666,16 @@ <replaceable>espressione3</replaceable> se <replaceable>espressione1</replaceable> è &false;. </para> + <note> + <simpara> + Si noti che l'operatore ternario è un'istruzione, e non viene valutato + come variabile, ma come risultato di un'istruzione. Questo + è importante da sapere nel caso si desideri restituire una variabile per riferimento. + La riga <literal>return $var == 42 ? $a : $b;</literal> in una funzione + che restituisce per riferimento non funzionerà e, nelle ultime versioni di PHP, + genererà un warning. + </simpara> + </note> </sect2> </sect1> @@ -681,6 +781,13 @@ PHP supporta lo stile C degli operatori di pre- e post-incremento e decremento. </para> + <note> + <simpara> + Gli operatori di incremento e decremento non agiscono sui valori boolean. + Anche decrementare il valore &null; non ha effetti, ma incrementarlo + darà come risultato <literal>1</literal>. + </simpara> + </note> <table> <title>Operatori di incremento/decremento</title> <tgroup cols="3"> @@ -756,8 +863,8 @@ <![CDATA[ <?php $i = 'W'; -for($n=0; $n<6; $n++) - echo ++$i . "\n"; +for ($n=0; $n<6; $n++) + echo ++$i . "\n"; ]]> </programlisting> &example.outputs; http://cvs.php.net/diff.php/phpdoc-it/language/references.xml?r1=1.6&r2=1.7&ty=u Index: phpdoc-it/language/references.xml diff -u phpdoc-it/language/references.xml:1.6 phpdoc-it/language/references.xml:1.7 --- phpdoc-it/language/references.xml:1.6 Wed Jun 22 07:54:54 2005 +++ phpdoc-it/language/references.xml Thu Jul 21 08:37:16 2005 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- EN-Revision: 1.39 Maintainer: alan_dangelo Status: ready --> +<!-- EN-Revision: 1.43 Maintainer: alan_dangelo Status: ready --> <chapter id="language.references"> <title>Spiegazioni sui riferimenti</title> @@ -254,7 +254,9 @@ </informalexample> Nota che non si usa il segno di riferimento nella chiamata della funzione, ma solo nella definizione. La definizione della funzione basta da sola - per passare correttamente un argomento per riferimento. + per passare correttamente un argomento per riferimento. Nelle versioni recenti di PHP + si avrà un warning indicante che "Call-time pass-by-reference" è + deprecato quando si usa & <literal>foo(&$a);</literal> . </para> <para> Le seguenti cose possono essere passate per riferimento: @@ -306,9 +308,9 @@ return $a; } -foo(bar()); +foo(bar()); // produce un errore fatale da PHP 5.1.0 foo($a = 5); // Expressione: non una variabile -foo(5); // Constante: non una variabile +foo(5); // Genera un errore fatale ?> ]]> </programlisting> @@ -321,7 +323,10 @@ <title>Restituzione per riferimento</title> <para> La restituzione per riferimento è utile quando si vuole usare una funzione - per trovare quale variabile un riferimento dovrebbe limitare. Per + per trovare quale variabile un riferimento dovrebbe limitare. + <emphasis>non</emphasis> utilizzare il ritorno per riferimento per incrementare le prestazioni, + l'engine è abbastanza abile da ottimizzare il codice per proprio conto. Restituire valori per riferimento + solo se si hanno validi motivi tecnici! Per restituire per riferimento, si usa questa sintassi: <informalexample> <programlisting role="php"> @@ -350,8 +355,15 @@ si vuole restituire per riferimento, e non per copia come di consueto, e per indicare nella chiamata, il collegamento del riferimento, piuttosto che l'usuale assegnazione che verrebbe fatta per <varname>$foo</varname>. - <literal>&</literal> nella definizione delle funzioni è opzionale nei metodi delle - <link linkend="keyword.class">classi</link>. + </simpara> + </note> + <note> + <simpara> + Se si tenta di restituire un valore per riferimento da una funzione con la sintassi: + <literal>return ($found_var);</literal> questo <emphasis>non</emphasis> funzionerà + poichè si sta tntando di restituire per riferimento il risultato di un' + <emphasis>espressione</emphasis>, e non una variabile. Da una funzione, si possono restituire + per riferimento solo le variabili. </simpara> </note> </sect1>