cvs: phpdoc-it /appendices migration5.xml

View: New views
1 Messages — Rating Filter:   Alert me  

cvs: phpdoc-it /appendices migration5.xml

by Marco Cucinato-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

cucinato Sun Nov  4 20:48:55 2007 UTC

  Added files:                
    /phpdoc-it/appendices migration5.xml
  Log:
  Added new translation
 
 

http://cvs.php.net/viewvc.cgi/phpdoc-it/appendices/migration5.xml?view=markup&rev=1.1
Index: phpdoc-it/appendices/migration5.xml
+++ phpdoc-it/appendices/migration5.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- En-Revision: 1.56 maintainer: cucinato status: ready -->
 <appendix xml:id="migration5" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <title>Migrazione da PHP 4 a PHP 5</title>

  <section xml:id='migration5.changes'>
   <title>Cosa è cambiato in PHP 5</title>
   <para>
    PHP 5 e il Zend Engine 2 integrato hanno migloirat moltissimo la performance
    e le capcità di PHP, ma è stata usata estrema cura per creare i minori
    problemi possibili al codice esistente. Quindi, migrare il codice da PHP 4 a
    dovrebbe essere molto semplice.. La maggior parte del codice PHP 4 esistente dovrebbe essere pronto per
    essere eseguito senza cambiamenti, ma occorre comunque conoscere le <link
     linkend="migration5.incompatible">poche differenze</link> e
    testare con attenzione il codice prima di cambiare le versioni negli ambienti
    di produzione.
   </para>
  </section>

  <section xml:id="migration5.incompatible">
   <title>Cambiamenti non compatibili</title>
   <para>
    Anche se la maggior parte del codice PHP 4 esistente dovrebbe funzionare senza modifiche, occorre
    fare attenzione ai seguenti cambiamenti incompatibili col codice precedente:
   </para>
   <itemizedlist>
    <listitem>
     <simpara>
      Ci sono alcune <link linkend="reserved.keywords">nuove parole chiave
      riservate</link>.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>strrpos</function> e <function>strripos</function> ora utilizzano
      l'intera stringa come argomento di ricerca.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      L'uso illegale degli offset delle stringhe causa <constant>E_ERROR</constant> invece
      di <constant>E_WARNING</constant>. Un esempio di utilizzo illegale è:
      <literal>$str = 'abc'; unset($str[0]);</literal>.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_merge</function> è stata cambiata per accettare solo array. Se viene
      passata una variabile che non è un array, un <constant>E_WARNING</constant> viene
      lanciato per ogni parametro. Prestare attenzione, poiché il codice può cominciare
      ad emettere <constant>E_WARNING</constant> improvvisamente.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      La variabile server PATH_TRANSLATED non è più impostata implicitamente sotto
      Apache2 SAPI diversamente che in PHP 4, dove è impostato
      allo stesso valore della variabile server SCRIPT_FILENAME quando non è
      riempito da Apache. Questa modifica è stata fatta per adeguarsi alle <link
      xlink:href="&url.cgispecs;">specifiche CGI</link>. Consultare il <link
      xlink:href="&url.php.bugs;23610">bug #23610</link> per ulteriori informazioni,
      e vedere anche la descrizione di <link linkend="reserved.variables.server">
      $_SERVER['PATH_TRANSLATED']</link> nel manuale. Questo problema
      interessa anche le versioni di PHP >= 4.3.2.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      La costante <constant>T_ML_COMMENT</constant> non è più definita
      dall'estensione <link linkend="ref.tokenizer">Tokenizer</link>. Se
      error_reporting è impostata a <constant>E_ALL</constant>, PHP
      genera un avviso. Anche se la costante <constant>T_ML_COMMENT</constant> non
      è mai stata utilizzata, era definita in PHP 4. Sia in PHP 4 che in PHP 5
      // e /* */ sono risolte come la costante <constant>T_COMMENT</constant>.
      Comunque i commenti in stile PHPDoc /** */, che a partire da PHP
      5 sono analizzate da PHP, sono riconosciute come <constant>T_DOC_COMMENT</constant>.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      $_SERVER dovrebbe essere popolata con argc e argv se <link
      linkend="ini.variables-order">variables_order</link> include "S". Se
      si è configurato il sistema in modo da non creare $_SERVER,
      ovviamente questa non dovrebbe comparire. La modifica è stata quella di rendere argc
      e argv disponibile nella versione CLI a prescindere dall'impostazione di <link
      linkend="ini.variables-order">variables_order</link>. Di conseguenza,
      la versione CLI ora popolerà sempre le variabili globali $argc e $argv.
     
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      Un oggetto senza proprietà non è più considerato "vuoto".
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      In alcuni casi le classi devono essere dichiarate prima dell'utilizzo. Questo succede solo se
      è usata qualcuna delle nuove caratteristiche di PHP 5 (come <link
      linkend="language.oop5.interfaces">le interfacce</link>).
      In caso contratio il comportamento è quello vecchio.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>get_class</function>, <function>get_parent_class</function>
      e <function>get_class_methods</function> ora restituiscono il nome di
      classi/metodi come sono dichiarati (case-sensitive) il che può portare a
      problemi in vecchi script che si basano sul comportamento precedente (il
      nome di classe/metodo era sempre restituito a caratteri minuscoli). Una soluzione possibile
      è quella di cercare queste funzioni negli script ed utilizzare
      <function>strtolower</function>.
     </simpara>
     <simpara>
      Questa modifica alla sensibilità di maiuscole/minuscole si applica anche alle
      <link linkend="language.constants.predefined">costanti magiche
      predefinite</link> <constant>__CLASS__</constant>,
      <constant>__METHOD__</constant>, e <constant>__FUNCTION__</constant>.
      I valori sono restituiti esattamente come dichiarati (case-sensitive).
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ip2long</function> ora restituisce &false; quando un IP
      address non valido è passata come argomento alla funzione, e non più
      <literal>-1</literal>.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      Se esistono funzioni definite in un file incluso, queste possono essere utilizzate nel
      file principale indipendentemente dal fatto che siano prima di <function>return</function> o dopo.
      Se il file è incluso due volte, PHP 5 emette un errore fatale poiché le funzioni
      erano già dichiarate, mentre PHP 4 non si lamenta di questo.
      Si raccomanda di utilizzare <function>include_once</function> invece di
      controllare se il file è stato già incluso e fare un return condizionato all'interno del
      file incluso.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>include_once</function> e <function>require_once</function>
      in Windows per prima cosa normalizzano il percorso del file incluso in modo tale che includere
      A.php e a.php provochi una sola inclusione del file.
     </simpara>
    </listitem>
   </itemizedlist>

   <para>
    <example>
     <title><function>strrpos</function> e <function>strripos</function> ora
      utilizzano l'intera stringa come argomento di ricerca</title>
     <programlisting role="php">
<![CDATA[
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
]]>
     </programlisting>
    </example>
   </para>
   <para>
    <example>
     <title>Un oggetto senza proprietà non è più considerato "vuoto"</title>
     <programlisting role="php">
<![CDATA[
<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    // Viene eseguito
}
?>
]]>
     </programlisting>
    </example>
   </para>
   <para>
    <example>
     <title>In alcuni casi le classi devono essere dichiarate prima dell'utilizzo</title>
     <programlisting role="php">
<![CDATA[
<?php

//funziona senza errori:
$a = new a();
class a {
}


//emette un errore:
$a = new b();

interface c{
}
class b implements c {
}

?>
]]>
     </programlisting>
    </example>
   </para>
  </section>

  <section xml:id="migration5.cli-cgi">
   <title>CLI e CGI</title>
   <para>
    In PHP 5 sono avvenute modifiche dei nomi dei file di CLI e CGI. In PHP 5, la
    versione CGI è stata rinominata <filename>php-cgi.exe</filename> (prima era
    <filename>php.exe</filename>) e la versione CLI ora è posizionata nella cartella
    principale (prima era <filename>cli/php.exe</filename>).
   </para>
   <para>
    In PHP 5 è stato inoltre introdotta una nuova modalità:
    <filename>php-win.exe</filename>. Questa è uguale alla versione CLI, eccetto
    il fatto che php-win non manda niente in output e quindi non crea console (nessuna "finestra
    dos" appare sullo schermo). Questo comportamento è simile a php-gtk.
   </para>
   <para>
    In PHP 5, la versione CLI riempie sempre le variabili globali
    <varname>$argv</varname> e <varname>$argc</varname> a prescindere da
    qualsiasi direttiva &php.ini;.  Anche l'impostazione di
    <link linkend="ini.register-argc-argv">register_argc_argv</link> a
    <literal>off</literal> non avrà effetto in CLI.
   </para>
   <para>
    Vedere anche la <link linkend="features.commandline">documentazione della linea di
    comando</link>.
   </para>
  </section>

  <section xml:id="migration5.configuration">
   <title>Migrazione dei file di configurazione</title>
   <para>
    Dal momento che i nomi dei moduli ISAPI sono cambiati, da php4xxx a php5xxx, occorre
    fare alcuni cambiamenti nei file di configurazione. Ci sono state anche
    cambiamenii nei nomi delle versioni CLI e CGI. Fare riferimento alla <link
     linkend="migration5.cli-cgi">sezione corrispondente</link> per ulteriori
    informazioni.
   </para>
   <para>
    La migrazioen della configurazione di Apache è estremamente facile. Vedere l'esempio qui sotto
    per conoscere i cambiamenti che devono essere effettuati:
    <example>
     <title>Migrazione dei file di configurazione di Apache per PHP 5</title>
     <programlisting role="apache-conf">
<![CDATA[
# cambiare questa linea:
LoadModule php4_module /php/sapi/php4apache2.dll

# con questa:
LoadModule php5_module /php/php5apache2.dll
]]>
     </programlisting>
    </example>
   </para>
   <para>
    Se il server web esegue PHP in modalità CGI, occorre notare che la
    versione CGI ha cambiato nome da <filename>php.exe</filename> a
    <filename>php-cgi.exe</filename>.
    In Apache, si deve fare questa modifica:
    <example>
     <title>Migrazione dei file di configurazione di Apache per PHP 5, modalità CGI</title>
     <programlisting role="apache-conf">
<![CDATA[
# cambiare questa linea:
Action application/x-httpd-php "/php/php.exe"

# con questa:
Action application/x-httpd-php "/php/php-cgi.exe"
]]>
     </programlisting>
    </example>
   </para>
   <para>
    In altri server web occorre cambiare i nomi dei file dei moduli CGI o
    ISAPI.
   </para>
  </section>

  <section xml:id="migration5.functions">
   <title>Nuove funzioni</title>
   <para>
    In PHP 5 sono disponibili alcune nuove funzioni. Di seguito la lista:
   </para>
   <para><link linkend="ref.array">Array</link>:</para>
    <itemizedlist>
    <listitem>
     <simpara>
      <function>array_combine</function> - Crea un array utilizzando un array
      per le chiavi e un altro per i valori.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_diff_uassoc</function> - Calcola la differenza tra
      array con la possibilità di controllare gli indici mediante una funzione di callback
      fornita dall'utente
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_udiff</function> - Calcola la differenza tra array
      utilizzando una funzione callback per la comparazione dei dati
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_udiff_assoc</function> - Calcola la differenza tra
      array con la possibilità di verificare gli indici. I valori sono comparati utilizzando una
      funzione di callback
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_udiff_uassoc</function> - Calcola la differenza tra
      array con la possibilità di verificare gli indici. I valori sono comparati utilizzando una
      funzione di callback. La verifica degli indici è fatta utilizzando una funzione di callback
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_walk_recursive</function> - Applica una funzione utente
      in modo ricorsivo ad ogni elemento di un array
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_uintersect_assoc</function> - Calcola l'intersezione di
      array con la possibilità di verificare gli indici. I valori sono comparati utilizzando una
      funzione di callback
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_uintersect_uassoc</function> - Calcola l'intersezione di
      array con la possibilità di verificare gli indici. Sia i valori che gli indici sono comparati
      utilizzando funzioni di callback
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>array_uintersect</function> - Calcola l'intersezione di array.
      I valori sono comparati utilizzando una funzione di callback
     </simpara>
    </listitem>
   </itemizedlist>

   <para><link linkend="ref.ibase">InterBase</link>:</para>
   <itemizedlist>
    <listitem>
     <simpara>
      <function>ibase_affected_rows</function> - Restituisce il numero di righe
      che sono state modificate dalla precedente query
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_backup</function> - Inizia un task di backup sul
      service manager e ritorna immediatamente il controllo
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_commit_ret</function> - Esegue il commit di una transazione senza
      chiuderla
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_db_info</function> - Richiede le statistiche su un
      database
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_drop_db</function> - Esegue il drop di un database
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_errcode</function> - Restituisce un codice di errore
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_free_event_handler</function> - Annulla un event handler registrato
      event handler
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_gen_id</function> - Incrementa il generatore indicato e
      restotuisce il suo nuovo valore
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_maintain_db</function> - Esegue un comando di manutenzione
      sul server database
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_name_result</function> - Assegna un nome ad un set di risultati
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_num_params</function> - Restituisce il numero di parametri
      in una prepared query
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_param_info</function> - Restituisce informazioni su un
      parametro in una prepared query
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_restore</function> - Inizia un task di restore sul
      service manager e ritorna immediatamente il controllo
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_rollback_ret</function> - Rollback transaction and
      retain the transaction context
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_server_info</function> - Request statistics about a
      database server
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_service_attach</function> - Connect to the service manager
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_service_detach</function> - Disconnect from the
      service manager
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_set_event_handler</function> - Register a callback
      function to be called when events are posted
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ibase_wait_event</function> - Wait for an event to be posted
      by the database
     </simpara>
    </listitem>
   </itemizedlist>

   <para><link linkend="ref.iconv">iconv</link>:</para>
   <itemizedlist>
    <listitem>
     <simpara>
      <function>iconv_mime_decode</function> - Decodes a MIME header field
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>iconv_mime_decode_headers</function> - Decodes multiple MIME
      header fields at once
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>iconv_mime_encode</function> - Composes a MIME header field
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>iconv_strlen</function> - Returns the character count of
      string
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>iconv_strpos</function> - Finds position of first occurrence
      of a needle within a haystack
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>iconv_strrpos</function> - Finds the last occurrence of a
      needle within a haystack
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>iconv_substr</function> - Cut out part of a string
     </simpara>
    </listitem>
   </itemizedlist>

   <para><link linkend="ref.stream">Streams</link>:</para>
   <itemizedlist>
    <listitem>
     <simpara>
      <function>stream_copy_to_stream</function> - Copies data from one stream
      to another
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_get_line</function> - Gets line from stream resource up
      to a given delimiter
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_socket_accept</function> - Accept a connection on a
      socket created by <function>stream_socket_server</function>
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_socket_client</function> - Open Internet or Unix domain
      socket connection
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_socket_get_name</function> - Retrieve the name of the
      local or remote sockets
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_socket_recvfrom</function> - Receives data from a
      socket, connected or not
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_socket_sendto</function> - Sends a message to a socket,
      whether it is connected or not
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>stream_socket_server</function> - Create an Internet or Unix
      domain server socket
     </simpara>
    </listitem>
   </itemizedlist>

   <para><link linkend="ref.datetime">Date and time related</link>:</para>
   <itemizedlist>
    <listitem>
     <simpara>
      <function>idate</function> - Format a local time/date as integer
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>date_sunset</function> - Time of sunset for a given day and
      location
    </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>date_sunrise</function> - Time of sunrise for a given day and
      location
    </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>time_nanosleep</function> - Delay for a number of seconds and
      nanoseconds
    </simpara>
    </listitem>
   </itemizedlist>

   <para><link linkend="ref.strings">Strings</link>:</para>
   <itemizedlist>
    <listitem>
     <simpara>
      <function>str_split</function> - Convert a string to an array
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>strpbrk</function> - Search a string for any of a set of
      characters
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>substr_compare</function> - Binary safe optionally case
      insensitive comparison of two strings from an offset, up to length
      characters
     </simpara>
    </listitem>
   </itemizedlist>

   <para>Other:</para>
   <itemizedlist>
    <listitem>
     <simpara>
      <function>convert_uudecode</function> - decode a uuencoded string
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>convert_uuencode</function> - uuencode a string
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>curl_copy_handle</function> - Copy a cURL handle
      along with all of its preferences
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>dba_key_split</function> - Splits a key in string
      representation into array representation
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>dbase_get_header_info</function> - Get the header info of a
      dBase database
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>dbx_fetch_row</function> - Fetches rows from a query-result
      that had the DBX_RESULT_UNBUFFERED flag set
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>fbsql_set_password</function> - Change the password for a
      given user
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>file_put_contents</function> - Write a string to a file
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ftp_alloc</function> - Allocates space for a file to be
      uploaded
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>get_declared_interfaces</function> - Returns an array of all
      declared interfaces
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>get_headers</function> - Fetches all the headers sent by the
      server in response to a HTTP request
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>headers_list</function> - Returns a list of response headers
      sent (or ready to send)
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>http_build_query</function> - Generate URL-encoded query string
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>image_type_to_extension</function> - Get file extension for
      image-type returned by <function>getimagesize</function>,
      <function>exif_read_data</function>,
      <function>exif_thumbnail</function>,
      <function>exif_imagetype</function>
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>imagefilter</function> - Applies a filter to an image using
      custom arguments
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>imap_getacl</function> - Gets the ACL for a given mailbox
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>ldap_sasl_bind</function> - Bind to LDAP directory using SASL
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>mb_list_encodings</function> - Returns an array of all
      supported encodings
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>pcntl_getpriority</function> - Get the priority of any
      process
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>pcntl_wait</function> - Waits on or returns the status of a
      forked child as defined by the waitpid() system call
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>pg_version</function> - Returns an array with client, protocol
      and server version (when available)
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>php_check_syntax</function> - Check the syntax of the
      specified file
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>php_strip_whitespace</function> - Return source with stripped
      comments and whitespace
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>proc_nice</function> - Change the priority of the current
      process
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>pspell_config_data_dir</function> - Change location of
      language data files
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>pspell_config_dict_dir</function> - Change location of the
      main word list
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>setrawcookie</function> - Send a cookie without URL-encoding
      the value
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>scandir</function> - List files and directories inside the
      specified path
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>snmp_read_mib</function> - Reads and parses a MIB file into
      the active MIB tree
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <function>sqlite_fetch_column_types</function> - Return an array of
      column types from a particular table
     </simpara>
    </listitem>
   </itemizedlist>
   <note>
    <para>
     The <link linkend="ref.tidy">Tidy</link> extension has also changed its
     API completely.
    </para>
   </note>
  </section>


  <section xml:id="migration5.newconf">
   <title>New Directives</title>
   <para>
    There were some new &php.ini; directives introduced in PHP 5. Here is a
    list of them:
   </para>
   <itemizedlist>
    <listitem>
     <simpara>
      mail.force_extra_parameters - Force the addition of the specified
      parameters to be passed as extra parameters to the sendmail binary.
      These parameters will always replace the value of the 5th parameter to
      <function>mail</function>, even in safe mode
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <link linkend="ini.register-long-arrays">register_long_arrays</link> -
      allow/disallow PHP to register the deprecated long $HTTP_*_VARS
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <link linkend="ini.session.hash-function">session.hash_function</link> -
      select a hash function (MD5 or SHA-1)
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <link
      linkend="ini.session.hash-bits-per-character">session.hash_bits_per_character</link>
      - define how many bits are stored in each character when converting the
      binary hash data to something readable (from 4 to 6)
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      <link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link>
      - Enable compatibility mode with Zend Engine 1 (PHP 4)
     </simpara>
    </listitem>
   </itemizedlist>
  </section>

  <section xml:id="migration5.databases">
   <title>Databases</title>
   <para>
    There were some changes in PHP 5 regarding databases (MySQL and SQLite).
   </para>
   <para>
    In PHP 5 the MySQL client libraries are not bundled, because of license
    problems and some others. For more information, read the <link
     linkend="faq.databases.mysql.php5">FAQ entry</link>.
   </para>
   <para>
    There is also a new extension, <link linkend="ref.mysqli">MySQLi (Improved
     MySQL)</link>, which is designed to work with MySQL 4.1 and above.
   </para>
   <para>
    Since PHP 5, the <link linkend="ref.sqlite">SQLite</link> extension is
    built-in PHP. SQLite is an embeddable SQL database engine and is not a
    client library used to connect to a big database server (like MySQL or
    PostgreSQL). The SQLite library reads and writes directly to and from the
    database files on disk.
   </para>
  </section>


  <section xml:id='migration5.oop'>
   <title>New Object Model</title>
   <para>
    In PHP 5 there is a new Object Model. PHP's handling of objects has been
    completely rewritten, allowing for better performance and more features.
    In previous versions of PHP, objects were handled like primitive types
    (for instance integers and strings). The drawback of this method was that
    semantically the whole object was copied when a variable was assigned, or
    passed as a parameter to a method. In the new approach, objects are
    referenced by handle, and not by value (one can think of a handle as an
    object's identifier).
   </para>
   <para>
    Many PHP programmers aren't even aware of the copying quirks of the old
    object model and, therefore, the majority of PHP applications will work
    out of the box, or with very few modifications.
   </para>
   <para>
    The new Object Model is documented at the <link
     linkend="language.oop5">Language Reference</link>.
   </para>
   <para>
    In PHP 5, function with the name of a class is called as a constructor
    only if defined in the same class. In PHP 4, it is called also if defined
    in the parent class.
   </para>
   <para>
    See also the <link linkend="ini.zend.ze1-compatibility-mode">
    zend.ze1_compatibility_mode</link> directive for compatability with
    PHP 4.
   </para>
  </section>

  <section xml:id='migrating5.errorrep'>
   <title>Error Reporting</title>
   <para>
    As of PHP 5 new error reporting constant E_STRICT was introduced with
    value 2048. It enables run-time PHP suggestions on your code
    interoperability and forward compatibility, that will help you to keep
    latest and greatest suggested method of coding. E.g. STRICT message will
    warn you on using deprecated functions.
   </para>
   <note>
    <simpara>
     E_ALL does not include E_STRICT so it's not enabled by default
    </simpara>
   </note>
  </section>

 </appendix>


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


--
PHP Italian Documentation Mailing List (http://php.net/manual/it/)
To unsubscribe, visit: http://www.php.net/unsub.php
LightInTheBox - Buy quality products at wholesale price