È passato molto tempo, ma finalmente abbiamo una nuova versione di PHP. Offre alcune nuove funzionalità e miglioramenti, mentre altre funzionalità sono state rimosse o contrassegnate come deprecate.
Entriamo e diamo un'occhiata a tutto ciò che offre l'ultima versione.
In questa parte, inserirò le modifiche incompatibili con le versioni precedenti; tuttavia, la maggior parte del codice PHP5 funzionerà in PHP 5.6 senza alcuna modifica.
Secondo le specifiche JSON, json_decode ()
eliminerà immediatamente tutte le varianti non minuscole dei valori letterali JSON come true, false e null. Inoltre, verrà impostato json_last_error ()
di conseguenza.
Se non sei sicuro di quale sia GNU Multiple Precision (GMP) in PHP, ti consiglio di guardare questo articolo su PHP.net. In PHP 5.6, le risorse GMP sono oggetti. Non è necessario apportare modifiche al codice esistente a meno che non si stia verificando l'utilizzo esplicito di una risorsa is_resource ()
.
Tutte le funzioni di Mcrypt che prevedono chiavi e IV non accettano chiavi o IV con dimensioni errate. Queste funzioni includono mcrypt_encrypt ()
, mcrypt_decrypt ()
, mcrypt_cbc ()
, mcrypt_cfb ()
, mcrypt_ecb ()
, mcrypt_generic ()
, e mcrypt_ofb ()
.
Prima di PHP 5.6, quando si dichiarava una matrice nella proprietà della classe con chiavi esplicite e implicite, il valore dell'array veniva sovrascritto automaticamente quando la chiave esplicita era la stessa di una chiave implicita sequenziale.
class helloWorld const ONE = 1; public $ array = [self :: ONE => 'Eclipse', 'Sublime', 'PHPStorm',]; $ hello = new helloWorld (); print_r ($ ciao); // Prima di PHP 5.6 array ('Sublime', 'PHPStorm') // PHP 5.6 array ('Eclipse', 'Sublime', 'PHPStorm')
Con il rilascio di PHP 5.6, è possibile fornire un'espressione scalare che include sia valori letterali numerici che stringhe. Nelle versioni precedenti di PHP, ci si aspettava che fosse un valore statico di argomenti di funzioni costanti e dichiarazione di proprietà.
const ONE = 1; // Espressione scalare in costante const DUE = UNO * 2; class helloWorld // Espressione scalare in Property const THREE = TWO + 1; // Espressione scalare nei metodi public hello f ($ a = ONE + self :: THREE) return $ a; echo (new helloWorld) -> hello (). "\ n";
Prima stavamo usando func_get_args ()
per ottenere tutti gli argomenti disponibili in una chiamata di funzione, ma con PHP 5.6, questo può essere rimosso dal momento che possiamo facilmente ottenere tale funzionalità con ...
operatore.
function myTools ($ name, ... $ tools) echo "Name:". $ Name '.
'; echo "My Tool Count:". COUNT (strumenti); myTools ('Avinash', 'Eclipse'); // Output: // Nome: Avinash // My Tool Count: 1 myTools ('Avinash', 'Eclipse', 'Sublime'); // Output: // Nome: Avinash // My Tool Count: 2 myTools ('Avinash', 'Eclipse', 'Sublime', 'PHPStorm'); // Output: // Nome: Avinash // My Tool Count: 3
Possiamo usare lo stesso operatore (...
) per decomprimere qualsiasi argomento che sia una matrice o un insieme di oggetti percorribili.
function myTools ($ name, $ tool1, $ tool2, $ tool3) echo "Nome:". $ Name '.
'; echo "Tool1:", $ tool1. "
'; echo "Tool2:", $ tool2. "
'; echo "Tool3:", $ tool3; $ myTools = ['Eclipse', 'Sublime', 'PHPStorm']; myTools ('Avinash', ... $ myTools); // Output: // Nome: Avinash // Tool1: Eclipse // Tool1: Sublime // Tool1: PHPStorm
Il **
l'operatore è stato aggiunto per la esponenziazione. Abbiamo il supporto per l'operatore di stenografia con la stessa facilità.
echo 2 ** 3; eco "
"; $ a = 2; $ a ** = 3; echo $ a; // Output // 8 // 8
Si noti che l'ordine delle operazioni entra in gioco usando questo operatore. Si prega di dare un'occhiata al seguente esempio per una chiara comprensione:
echo 2 ** 2 ** 4;
Potresti aspettarti che restituisca 256 come sarebbe il raggruppamento (2 ** 2) ** 4
, Ma non è questo il caso. Il risultato reale sarebbe 65.536, poiché il raggruppamento andrebbe da destra a sinistra e analizzerà come 2 ** (2 ** 4)
.
Un PHP debugger chiamato phpdbg è stato aggiunto in PHP 5.6. Si prega di visitare il documento ufficiale per phpdbg.
Questo debugger phpdbg è implementato come un modulo SAPI.
Un nuovo metodo magico aggiunto in PHP 5.6 consente di modificare le proprietà e i valori di un oggetto quando l'oggetto viene stampato utilizzando var_dump ()
.
class demoDebugInfo () private $ val; funzione pubblica __construct ($ val) $ this-> val = $ val; public function __debuginfo () return ['iamchanged' => $ this-> val + 3; ]; $ debugInfo = new demoDebugInfo (50); // Otterremo array alterato che viene restituito dal metodo __debuginfo megic. var_dump ($ debuginfo);
Il set di caratteri predefinito per htmlentities ()
, html_entity_decode ()
e htmlspecialchars ()
le funzioni possono essere impostate usando default_charset ().
È possibile caricare un file più grande di 2 GB.
php: // input può essere usato tutte le volte che vuoi leggere i dati. Questa funzione offre una notevole riduzione della memoria rispetto alla lettura INVIARE
dati.
Il uso
l'operatore è stato offerto per supportare l'estensione di costanti e funzioni. Questo può essere eseguito usando il const
e il uso
funzioni, rispettivamente. In precedenza questo operatore era limitato alla sola classe.
Quando si tenta di accedere in modo statico a un metodo non statico o a un metodo statico che utilizza il contesto dell'oggetto, verrà immediatamente generato E_DEPRECATED
errore.
class helloWorld () public static hiWorld () $ hello = new helloWorld (); $ Hello-> hiWorld (); // Before PHP 5.6 E_STRICT error // Da PHP 5.6 E_DEPRECATED errore
$ HTTP_RAW_POST_DATA
è deprecato ora. Dovremmo usare php: // ingresso
anziché.
Con il lancio del default_charset ()
configurazione, l'opzione correlata è deprecata per iconv
e mbstring
.
Un elenco di tutte le funzioni modificate in PHP 5.6 può essere trovato nell'ultimo PHP Manual.
Un elenco di tutte le nuove funzioni in PHP 5.6 può essere trovato in questa sezione del manuale PHP.
Mentre il team di PHP sta lavorando alla prossima versione di PHP, direi che PHP 5.6 è stato spedito con una notevole quantità di miglioramenti e aggiunte di funzionalità e offre uno degli aggiornamenti più semplici delle versioni precedenti.
Non dimenticare di comunicarci eventuali domande o commenti che potresti avere nel feed qui sotto.