A- A A+

PHP 6, cosa cambia?

tag  php  release 

01/01/2012

Le novità della versione 6 del PHP

Un breve riassunto di quello che troveremo nella versione 6 del PHP.

Le modifiche che troveremo nella versione 6 del PHP cercheranno di rendere questo linguaggio open source di grandissimo successo verso una migliore implementazione del paradigma object-oriented.

Supporto Unicode Migliorato
Finalmente la gestione di decodifica Unicode viene gestita direttamente dal core del PHP. Chi conosce Java è abituato ad una gestione robusta dell'Unicode, adesso anche nel PHP troveremo le stesse funzionalità.

Namespaces
Già presente nella versione 5.3 del PHP, la gestione dei Namespaces trova la sua consacrazione definitiva nella versione 6 del PHP. Una comoda funzionalità già nota a chi utilizza Java o C# che permette di organizzare i nostri script in aree differenti per evitare fastidiosi comflitti tra metodi o classi con lo stesso nome presenti in script differenti. Finalmente potremo differenziare i nostri script con i Namespaces.

Ecco un esempio di PHP che utilizza i Namespaces:

<?php
// I'm not sure why I would implement my own XMLWriter, but at least
// the name of this one won't collide with the one built in to PHP
namespace NathanAGood;
class XMLWriter 
{
    // Implementation here...
}

$writer = new NathanAGood::XMLWriter();

?>

Web 2.0
Arriva il supporto completo per il protocollo SOAP e per l'XML. Entrambi gli elementi erano già presenti nelle versioni precedenti ma disabilitate di default. 

Ora i componenti PEAR per la gestione delle comunicazioni SOAP, relativi specialmente all'utilizzo dei Web Services, e per la manipolazione di dati in formato XML saranno presenti di default all'interno del PHP V6. Gli oggetti XMLReader e XMLWriter ora saranno disponibili nel core del linguaggio e non più opzionali.

Cosa verrà rimosso
Alcune funzionalità nella versione 6 del PHP verranno rimosse.

Il magic_quotes verrà dismesso definitivamente, questa funzionalità che permetteva di utilizzare una sintassi particolare nelle stringhe verrà rimossa per questioni di sicurezza. 
Questo un esempio di utilizzo:

<?php
// Assuming magic_quotes is on...
$sql = "INSERT INTO USERS (USERNAME) VALUES $_GET['username']";
?>

al posto di questa sintassi utilizzeremo:

<?php
// Using the proper parameterized query method for MySQL, as an example
$statement = $dbh->prepare("INSERT INTO USERS (USERNAME) VALUES ?");
$statement->execute(array($_GET['username']));
?>

Verra rimossa la funzione register_globals che permetteva di utilizzare variabili non inizializzate.

Esempio:

<?php
// A security hole, because if register_globals is on, the value for user_authorized
// can be set by a user sending them on the query string 
// (i.e., http://www.example.com/myscript.php?user_authorized=true)
if ($user_authorized) {
    // Show them everyone's sensitive data...
}
?>

Anche in questo caso, l'utilizzo un po' troppo libero delle variabili poteva portare problemi di sicurezza nelle nostre applicazioni. Questa la nuova sintassi raccomandata:

<?php
function is_authorized() {
    if (isset($_SESSION['user'])) {
        return true;
    } else {
        return false;
    }
}

$user_authorized = is_authorized();
?>

Sono stati rimossi anche register_long_arrays e safe_mode ritenuti ormai obsoleti.