|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
cvs: phpdoc-it /appendices migration.xmlcucinato Sun Nov 4 20:47:38 2007 UTC
Modified files: /phpdoc-it/appendices migration.xml Log: Sync with EN http://cvs.php.net/viewvc.cgi/phpdoc-it/appendices/migration.xml?r1=1.7&r2=1.8&diff_format=u Index: phpdoc-it/appendices/migration.xml diff -u phpdoc-it/appendices/migration.xml:1.7 phpdoc-it/appendices/migration.xml:1.8 --- phpdoc-it/appendices/migration.xml:1.7 Sat Jun 23 13:27:33 2007 +++ phpdoc-it/appendices/migration.xml Sun Nov 4 20:47:38 2007 @@ -1,39 +1,39 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- EN-Revision: 1.26 Maintainer: maxim Status: ready --> - +<!-- EN-Revision: 1.27 Maintainer: maxim Status: ready --> <appendix xml:id="migration" xmlns="http://docbook.org/ns/docbook"> <title>Migrazione da PHP/FI 2 a PHP 3</title> <section xml:id="migration.about"> - <title>Incompatibilià in 3.0</title> + <title>Incompatibilità in 3.0</title> <simpara> - PHP 3.0 è rescritto da terra in su. Ha un proprio parser che è - molto più robusto è consistente della 2.0. PHP 3.0 è anche significativamente - più veloce ed usa meno memoria. Tuttavia, alcuni di questi miglioramenti - non sarebbero resi possibili senza i cambiamenti delle compatibilità, - sia in sintassi che nelle funzionalità. + PHP 3.0 è stato riscritto da capo. Ha un proprio parser che è + molto più robusto e coerente di quello della versione 2.0. PHP 3.0 è anche + significativamente più veloce ed usa meno memoria. Tuttavia, alcuni di + questi miglioramenti non sarebbero stati possibili senza a modifiche della + compatibilità, sia nella sintassi che nelle funzionalità. </simpara> <simpara> - In più, gli sviluppatori di PHP hanno cercato di pulire sia sintassi del PHP - che la semantica nella versione 3.0, e questo ha anche causato alcune + Inoltre, gli sviluppatori di PHP hanno cercato di ripulire sia la sintassi + che la semantica nel PHP versione 3.0, e anche questo ha causato alcune incompatibilità. A lungo termine, crediamo che questi cambiamenti siano - per il migliore. + un miglioramento. </simpara> <simpara> - Questo capitolo proverà a guidarti tra le incompatibilità che potresti trovare - passando da PHP/FI 2.0 a PHP 3.0 ed auitarti a resolverli. Almeno dove è - necessario, le nuove funzionalità non vi sono accennate. + Questo capitolo proverà a guidare lo sviluppatore tra le incompatibilità + che si potrebbero incontrare passando da PHP/FI 2.0 a PHP 3.0 ed autare + a resolverle. Le nuove funzionalità non sono descritte a meno che non sia + necessario. </simpara> <simpara> - Un programma di conversione che può convertire automaticamente i vostri - vecchi script di PHP/FI 2.0 esiste già. Può essere trovato in - <filename class="directory">convertor</filename> sottodirectory della - distribuzione di PHP 3.0. Questo programma, comunque, interferisce soltanto - sui cambiamenti di sintassi, per ciò bisogna legere questo capitolo lo stesso. + Esiste un programma di conversione che può convertire automaticamente i + vecchi script PHP/FI 2.0. Si trova nella cartella + <filename class="directory">convertor</filename> della + distribuzione di PHP 3.0. Questo programma, comunque, intercetta solo le modifiche sintattiche, + quindi è comunque opportuno leggere attentamente questo capitolo. </simpara> </section> @@ -41,80 +41,79 @@ <title><literal>old_function</literal></title> <simpara> L'istruzione <literal>old_function</literal> permette di dichiarare - una funzione utilizzando una sintassi simile a PHP/FI2 (tranne che occorre + una funzione utilizzando una sintassi identica a PHP/FI2 (a parte il fatto che si deve sostituire 'function' con 'old_function'). </simpara> <simpara> Questa è un'opzione sconsigliata e dovrebbe essere utilizzata solo - dal convertitore PHP/FI2->PHP 3. + dal convertitore PHP/FI2->PHP 3. </simpara> <warning> <para> - Funzioni dichiarate come <literal>old_function</literal> non possono - essere chiamata dal codice interno al PHP. Tra le altre cose, questo significa - che si possono utilizzare queste funzioni in - <function>usort</function>, <function>array_walk</function>, e + Le funzioni dichiarate come <literal>old_function</literal> non possono + essere chiamate dal codice interno di PHP. Tra le altre cose, questo significa + che non si possono utilizzare in funzioni quali + <function>usort</function>, <function>array_walk</function> e <function>register_shutdown_function</function>. Si può aggirare questa - limitazione scrivendo un proprio wrapper (nel normale metodo - PHP 3) e da qui chiamare la <literal>old_function</literal>. + limitazione scrivendo un proprio wrapper (nella forma usuale di + PHP 3) che chiami la <literal>old_function</literal>. </para> </warning> </section> - + <section xml:id="migration.startendtags"> - <title>Inizio/fine tags di PHP</title> + <title>Inizio/fine tag di PHP</title> <para> - La prima cosa che probabilmente noterete è la modificha dei tag - del inizio e della fine di PHP. Il vecchio <literal><? ></literal> - è stato sostituito da tre nuove forme possibili: + La prima cosa che probabilmente si noterà è la modifica dei tag + di inizio e fine di PHP. Il vecchio <literal><? ></literal> + è stato sostituito da tre nuove forme possibili: <example> - <title>Migrazione: vecchio inizio/fine tag</title> + <title>Migrazione: vecchio tag di inizio/fine</title> <programlisting role="php"> <![CDATA[ -<? echo "Questo è il codice di PHP/FI 2.0\n"; ?> +<? echo "Questo è codice in PHP/FI 2.0\n"; > ]]> </programlisting> </example> - La versione 2.0, PHP/FI supporta anche questa variazione: + Dalla versione 2.0, PHP/FI supporta anche questa variante: <example> - <title>Migrazione: primo nuovo inizio/fine tag</title> + <title>Migrazione: nuovo tag di inizio/fine (prima variante)</title> <programlisting role="php"> <![CDATA[ -<? echo "Questo è il codice di PHP 3.0\n"; ?> +<? echo "Questo è codice in PHP 3.0!\n"; ?> ]]> </programlisting> </example> - Nota che il tag della fine ora consiste di un punto interrogativo - e di un superiore-che carattere anziché solamente un superiore-che. - Comunque, se pensate di usare XML sul vostro server, avrete dei problemi - con la prima nuova variazione perché PHP potrebbe provare ad eseguire - il XML markup nei documenti XML come un codice PHP. Per questa - raggione, la seguente variazione è stata introdotta: + Si noti che il tag di chiusura ora consiste di un punto interrogativo e di un + carattere '>' piuttosto che del solo carattere '>'. Comunque, se si + ha intenzione di usare XML sul server, ci sareanno dei problemi con + questa variante, in quanto PHP può provare ad eseguire il markup XML + dei documenti XML come se fosse codice PHP. Per questa ragione è stata + introdotta la seguente variante: <example> - <title>Migrazione: secondo nuovo inizio/fine tag</title> + <title>Migrazione: nuovo tag di inizio/fine (seconda variante)</title> <programlisting role="php"> <![CDATA[ -<?php echo "Questo è il codice di PHP 3.0\n"; ?> +<?php echo "Questo è codice di PHP 3.0!\n"; ?> ]]> </programlisting> </example> - Alcune persone hanno avuto dei problemi con gli editor che - non capiscono affatto i tag di istruzione del processo. - Microsoft FrontPage è un tale editor. Per evitare un suo - comportamento scoretto la seguente variazione è anche stata - introdotta: + Si sono verificati problemi con editor che non riconoscono + i tag di Processing Instruction. Microsoft FrontPage è uno + di questi, e come workaround è stata introdotta la seguente + variante: <example> - <title>Migrazione: terzo nuovo inizio/fine tag</title> + <title>Migrazione: nuovo tag di inizio/fine (terza variante)</title> <programlisting role="php"> <![CDATA[ <script language="php"> - echo "Questo è il codice di PHP 3.0\n"; + echo "Questo è codice in PHP 3.0!\n"; </script> ]]> @@ -127,10 +126,10 @@ <title>Sintassi di if..endif</title> <para> - Un modo `alternativo' di scrivere le istruzioni if/elseif/else usando - if(); elseif(); else; endif; non può essere implementato efficientemente - senza aggiungere una gran parte di complessità nel parser 3.0. - Per questo, la sintassi è stata cambiata: + Il modo `alternativo' di scrivere le istruzioni if/elseif/else usando + if(); elseif(); else; endif; non può essere implementato in modo efficiente senza + aggiungere complessità al parser 3.0. Per questo motivo, + la sintassi è stata cambiata: <example> <title>Migrazione: vecchia sintassi di if..endif</title> <programlisting role="php"> @@ -159,7 +158,8 @@ ]]> </programlisting> </example> - Nota che il punto e virgola e stata sostituita dai due punti in tutte + + Si noti che i punti e virgola sono stati sostituiti con i due punti in tutte le istruzioni tranne quella che termina l'espressione (endif). </para> </section> @@ -167,12 +167,13 @@ <section xml:id="migration.while"> <title>Sintassi di while</title> <para> - Stesso come con if..endif, la sintassi di while..endwhile è anche cambiata: + Esattamente come per if..endif, la sintassi di while..endwhile è cambiata + allo stesso modo: <example> <title>Migrazione: vecchia sintassi di while..endwhile</title> <programlisting role="php"> <![CDATA[ -while ($piu_roba_qui); +while ($variabile); ... endwhile; ]]> @@ -182,7 +183,7 @@ <title>Migrazione: nuova sintassi di while..endwhile</title> <programlisting role="php"> <![CDATA[ -while ($piu_roba_qui): +while ($variabile): ... endwhile; ]]> @@ -192,7 +193,7 @@ <warning> <simpara> Usando la vecchia sintassi di while..endwhile in PHP 3.0, - otterreste un ciclo infinito. + si otterrebbe un ciclo infinito. </simpara> </warning> </section> @@ -200,14 +201,13 @@ <section xml:id="migration.expr"> <title>Tipi di espressione</title> <simpara> - PHP/FI 2.0 usava il lato sinistro delle espressioni per - determinare che tipo il risultato dovrebbe essere. PHP 3.0 - prende entrambi i lati in considerazione quando determina - i tipi del risultato, e questo può causare un comportamento - inaspettato dei script 2.0 in versione 3.0. + PHP/FI 2.0 usava il lato sinistro delle espressioni per determinare di che tipo + dovesse essere il risultato. PHP 3.0 considera entrambi i lati quando + determina il tipo del risultato, e questo può causare un comportamento + inaspettato degli script 2.0 sulla versione 3.0. </simpara> <para> - Considera questo exampio: + Si consideri questo esempio: <informalexample> <programlisting role="php"> <![CDATA[ @@ -223,20 +223,20 @@ </programlisting> </informalexample> - In PHP/FI 2.0, questo visualizzerebbe entrambi gli indici di $a. - In PHP 3.0, invece, non visualizzerebbe nulla. Il motivo è che in - PHP 2.0, siccome il tipo del'argomento sinistro è una stringa, è stato - fatto una paragono tra le stringhe, ed infatti, <literal>""</literal> - non è uguale a <literal>"0"</literal>, per ciò il ciclo è continuato. - In PHP 3.0, quando una stringa è paragonata ad un intero, - viene fatto un paragone fra gli interi (la stringa è convertita in intero). - Ciò provoca una confrontazione di <literal>atoi("")</literal> che è - <literal>0</literal>, e <literal>variablelist</literal> che è anche - <literal>0</literal>, e siccome <literal>0==0</literal>, il ciclo non - passa neanche una volta. + In PHP/FI 2.0, questo visualizzerebbe entrambi gli indici di $a. In PHP + 3.0, invece, non visualizza nulla. Il motivo è che in PHP 2.0, + siccome il tipo del'argomento sinistro è una stringa, viene fatta una + comparazione fra stringhe, e <literal>""</literal> non è uguale a + <literal>"0"</literal>, quindi la condizione è verificata. In PHP 3.0, + quando una stringa è comparata con un intero, viene eseguita una comparazione tra intera + (la stringa è convertita in intero). Questo provoca una + comparazione tra <literal>atoi("")</literal> che è + <literal>0</literal>, e <literal>variablelist</literal> che è + pure <literal>0</literal>, e siccome <literal>0==0</literal>, la condizione + del ciclo non è mai verificata. </para> <para> - La soluzione è semplice. Sostituisci l'espressione while con: + La soluzione è semplice. Sostituire l'espressione while con: <informalexample> <programlisting role="php"> <![CDATA[ @@ -250,38 +250,40 @@ <section xml:id="migration.errors"> <title>I messaggi di errore sono cambiati</title> <simpara> - I messaggi di errore in PHP 3.0 sono spesso più esatti di quanto erano - quelli di 2.0, anche se non è più possibile di visuallizare - il codice che causa l'errore. Si visuallizerano comunque il nome del file - e la linea sulla quale l'errore è accaduto. + I messaggi di errore in PHP 3.0 sono spesso più accurati di quelli di 2.0, + ma non è più visualizzato il frammento di codice che causa l'errore. + Sono comunque visualizzati il nome del file e la linea sulla quale + l'errore si è verificato. </simpara> </section> <section xml:id="migration.booleval"> - <title>Valutazione cortocircuita booleana</title> + <title>Valutazione booleana cortocircuitata</title> <simpara> - In PHP 3.0 valutazione booleana è cortocircuita. Questo significa che + In PHP 3.0 la valutazione booleana è cortocircuitata. Questo significa che in una espressione come <literal>(1 || testami())</literal>, la - funzione <function>testami</function> non sarebbe eseguita poiché - niente può cambiare il risultato dell'espressione dopo<literal>1</literal>. + funzione <function>testami</function> non è eseguita poiché + niente può cambiare il risultato dell'espressione dopo + <literal>1</literal>. </simpara> <simpara> - Questa è una questione di compatibilità minore, ma può causare dei effetti laterali inattesi. + Questo è un problema di compatibilità meno grave, ma può causare + effetti collaterali inattesi. </simpara> </section> <section xml:id="migration.truefalse"> - <title>&true;/&false; valori ritornati dalle funzioni</title> + <title>Valori di ritorno &true;/&false; delle funzioni</title> <simpara> - La maggior parte delle funzioni interne sono state riscritte in modo - che ritornino &true; al successo e &false; al fallimento, invece - di 0 e -1 come nel PHP/FI 2.0. Il nuovo comportamento - aggevola un codice più logico, come <literal>$fp = fopen("/tuo/file") or - fail("fallito!");</literal>. Datto che PHP/FI 2.0 non ha avuto una chiara - regola su cosa deve ritornare una funzione fallita, la maggior parte dei - tali scritti probabilmente dovranno essere verificate manualmente dopo - aver usato il convertitore 2.0 - 3.0. + La maggior parte delle funzioni interne sono state riscritte in modo che ritornino &true; + in caso di successo e &false; in caso di fallimento, invece di, rispettivamente, 0 e -1 + in PHP/FI 2.0. Il nuovo comportamento permette di ottenere un codice + più logico, come <literal>$fp = fopen("/tuo/file") or + fail("fallito!");</literal>. Dato che PHP/FI 2.0 non ha regole chiare + sui valori di ritorno di una funzione in caso di fallimento, probabilmente la + la maggior parte degli script dovrà essere verificata manualmente dopo aver usato + il convertitore dalla versione 2.0 alla versione 3.0. </simpara> <para> <example> @@ -290,7 +292,7 @@ <![CDATA[ $fp = fopen($file, "r"); if ($fp == -1); - echo("Apertura per la lettura del $file fallita<br />\n"); + echo("Apertura in la lettura del $file fallita<br />\n"); endif; ]]> </programlisting> @@ -299,7 +301,7 @@ <title>Migrazione da 2.0: valori di ritorno, nuovo codice</title> <programlisting role="php"> <![CDATA[ -$fp = @fopen($file, "r") or print("Apertura per la lettura del $file fallita<br />\n"); +$fp = @fopen($file, "r") or print("Apertura in la lettura del $file fallita<br />\n"); ]]> </programlisting> </example> @@ -311,44 +313,47 @@ <itemizedlist> <listitem><simpara> - Il modulo Apache per PHP 3.0 non supporta più le versioni Apache - inferiori a 1.2. Apache 1.2 e superiore è necessario. + Il modulo Apache per PHP 3.0 non supporta più le versioni Apache + inferiori a 1.2. La versione 1.2 (o superiore) di Apache è necessaria. </simpara></listitem> <listitem><simpara> - <function>echo</function> non supporta più una stringa formattata. - Usa per questo la funzione <function>printf</function>. + <function>echo</function> non supporta più la stringa di formato. + Si usi piuttosto la funzione <function>printf</function>. </simpara></listitem> <listitem><simpara> - In PHP/FI 2.0, un implementazione collateranea causava - <literal>$foo[0]</literal> di avere lo stesso effetto di - <literal>$foo</literal>. Questo non è più cosi in PHP 3.0. + In PHP/FI 2.0, un effetto collaterale dell'implementazione faceva sì che + <literal>$foo[0]</literal> avesse lo stesso effetto di + <literal>$foo</literal>. Questo non è più vero in PHP 3.0. </simpara></listitem> <listitem> <simpara> - Leggere gli array con <literal>$array[]</literal> non è piu supportato + Non è più supportata la lettura degli array con + <literal>$array[]</literal>. </simpara> <simpara> - Cioè, non si puo aprire un array con un ciclo che fà - <literal>$data = $array[]</literal>. Usa <function>current</function> - e <function>next</function> per avere questo effetto. + Questo significa che non si può attraversare un array con un ciclo che esegue + <literal>$data = $array[]</literal>. Usare <function>current</function> + e <function>next</function> per ottenere lo stesso comportamento. </simpara> <simpara> Inoltre, <literal>$array1[] = $array2</literal> non aggiunge i valori di <literal>$array2</literal> a - <literal>$array1</literal>, ma invece aggiunge - <literal>$array2</literal> come làultima entrata di - <literal>$array1</literal>. Vedi anche il supporto di array multidimensionali. + <literal>$array1</literal>, invece aggiunge + <literal>$array2</literal> come ultima elemento di + <literal>$array1</literal>. Vedere anche il supporto di array + multidimensionali. </simpara> </listitem> <listitem> <simpara> - <literal>"+"</literal> non è più usato come un operatore - di concatenazione per le stringhe, invece converte i suoi argumenti - in numeri e realizza l'aggiunta numerica. Usa <literal>"."</literal> al posto suo. + <literal>"+"</literal> non è più usato come un operatore + di concatenazione per le stringhe, ma converte i suoi argumenti + in numeri e realizza l'addizione numerica. Usare invece + <literal>"."</literal>. </simpara> </listitem> </itemizedlist> @@ -361,8 +366,8 @@ ]]> </programlisting> <para> - In PHP 2.0 avrebbe emettesso 11, in PHP 3.0 invece emetterebbe 2. - Perciò si usa: + In PHP 2.0 questo visualizza 11, in PHP 3.0 invece visualizza 2. + Al suo posto si usi: <programlisting role="php"> <![CDATA[ echo "1"."1"; @@ -377,7 +382,7 @@ </programlisting> </para> <para> - Emette 2 in entrambi PHP 2.0 e 3.0. + Questo visualizza 2 sia in PHP 2.0 che in PHP 3.0. <programlisting role="php"> <![CDATA[ $a = 1; @@ -385,7 +390,7 @@ echo $a.$b; ]]> </programlisting> - Questo emettera 11 in PHP 3.0. + Questo visualizza 11 in PHP 3.0. </para> </example> </section> -- PHP Italian Documentation Mailing List (http://php.net/manual/it/) To unsubscribe, visit: http://www.php.net/unsub.php |
| Free Forum Powered by Nabble | Forum Help |