A venit mult timp, dar avem în sfârșit o nouă versiune a PHP. Oferă câteva caracteristici și îmbunătățiri noi, în timp ce alte caracteristici au fost eliminate sau marcate ca fiind depreciate.
Să ne aruncăm cu capul și să aruncăm o privire la tot ceea ce oferă cea mai recentă versiune.
În această parte, voi enumera schimbări incompatibile înapoi; cu toate acestea, majoritatea codului dvs. PHP5 va funcționa în PHP 5.6 fără modificări.
În conformitate cu specificația JSON, json_decode ()
va elimina imediat toate variantele non-litere ale literalurilor JSON cum ar fi true, false și null. Se va seta, de asemenea json_last_error ()
în consecinţă.
Dacă nu sunteți sigur ce este GNU Multiple Precision (GMP) în PHP, atunci vă sfătuiesc să vă uitați la acest articol pe PHP.net. În PHP 5.6, resursele GMP sunt obiecte. Nu este nevoie să efectuați modificări în codul existent decât dacă verificați utilizarea unei resurse is_resource ()
.
Toate funcțiile Mcrypt care așteaptă cheile și IV-urile nu vor accepta chei sau IV-uri cu mărime incorectă. Aceste funcții includ mcrypt_encrypt ()
, mcrypt_decrypt ()
, mcrypt_cbc ()
, mcrypt_cfb ()
, mcrypt_ecb ()
, mcrypt_generic ()
, și mcrypt_ofb ()
.
Înainte de PHP 5.6, atunci când ați declarat o matrice în proprietatea de clasă cu chei explicite și implicite, valoarea array a fost suprascrisă în tăcere când cheia explicită a fost aceeași ca o cheie implicită secvențială.
clasa helloWorld const ONE = 1; public $ array = [auto :: ONE => 'Eclipse', 'Sublime', 'PHPStorm',]; $ hello = noul helloWorld (); print_r ($ Hello); // Înainte de PHP 5.6 array ('Sublime', 'PHPStorm') // PHP 5.6 array ('Eclipse', 'Sublime', 'PHPStorm')
Odată cu lansarea PHP 5.6, este posibil să se furnizeze o expresie scalară care include atât literali numerici, cât și literali de șir. În versiunile anterioare de PHP, era de așteptat să fie o valoare statică a argumentelor funcției constante și a declarației de proprietate.
const ONE = 1; // Expresia scalară în const constantă TWO = ONE * 2; clasa helloWorld // Expresia scalară în proprietăți const THREE = TWO + 1; // Expresia scalară în metode publice hello f ($ a = ONE + eu :: TREI) return $ a; ecou (nou helloWorld) -> salut (). "\ n";
Anterior am folosit func_get_args ()
pentru a obține toate argumentele disponibile într-un apel de funcții, dar cu PHP 5.6, acest lucru poate fi eliminat deoarece putem obține cu ușurință acea facilitate cu ...
operator.
funcția myTools ($ name, ... $ tools) echo "Nume:". $ Nume.“
„; ecou "Numarul meu de instrumente:". conta (instrumente); myTools ("Avinash", "Eclipse"); // Output: // Nume: Avinash // My Tool Count: 1 myTools ('Avinash', 'Eclipse', 'Sublime'); // Output: // Nume: Avinash // My Tool Count: 2 myTools ('Avinash', 'Eclipse', 'Sublime', 'PHPStorm'); // Ieșire: // Nume: Avinash // Număr de unelte: 3
Putem folosi același operator (...
) pentru a despacheta orice argument care este fie un tablou sau un set de obiecte traversabile.
funcția myTools ($ name, $ tool1, $ tool2, $ tool3) echo "Nume:". $ Nume.“
„; ecou "Instrumentul1:", $ instrument1. "
„; echo "Tool2:", $ tool2. "
„; echo "Tool3:", $ tool3; $ myTools = ['Eclipse', 'Sublime', 'PHPStorm']; myTools ('Avinash', ... $ myTools); // Output: // Nume: Avinash // Tool1: Eclipse // Tool1: Sublime // Tool1: PHPStorm
**
operator a fost adăugat pentru exponentiare. Avem sprijinul pentru operatorul de stenografie cât mai ușor.
echo 2 ** 3; ecou "
"$ a = 2; $ a ** = 3; echo $ a; // Output // 8 // 8
Rețineți că ordinea de operațiuni intră în joc folosind acest operator. Vă rugăm să aruncați o privire la următorul exemplu pentru o înțelegere clară:
echo 2 ** 2 ** 4;
S-ar putea să te aștepți să se întoarcă 256 ca gruparea ar fi ca (2 ** 2) ** 4
, dar acest lucru nu este cazul aici. Rezultatul real ar fi 65.536, deoarece gruparea ar fi de la dreapta la stânga și va fi analizată ca 2 ** (2 ** 4)
.
Un program de depanare interactiv numit phpdbg a fost adăugat în PHP 5.6. Vizitați documentul oficial pentru phpdbg.
Acest program debugger phpdbg este implementat ca un modul SAPI.
O nouă metodă magică adăugată în PHP 5.6 vă permite să modificați proprietățile și valorile unui obiect atunci când obiectul este ieșit folosind var_dump ()
.
clasa demoDebugInfo () privat $ val; funcția publică __construct ($ val) $ this-> val = $ val; funcția publică __debuginfo () return ['iamchanged' => $ this-> val + 3; ]; $ debugInfo = nou demoDebugInfo (50); // Vom primi o matrice modificată care este returnată prin metoda __debuginfo megic. var_dump ($ debugInfo);
Setul de caractere implicit pentru htmlentities ()
, html_entity_decode ()
și htmlspecialchars ()
funcțiile pot fi setate folosind default_charset ().
Este posibil să încărcați un fișier mai mare de 2 GB.
php: // introducerea poate fi utilizată ori de câte ori doriți să citiți date. Această caracteristică oferă o reducere semnificativă a memoriei în comparație cu citirea POST
date.
utilizare
operator a fost oferit să sprijine extinderea constantelor și a funcțiilor. Acest lucru poate fi realizat prin utilizarea funcției const
si utilizare
funcții, respectiv. Anterior, acest operator era limitat doar la clasă.
Când încercați să accesați în mod static o metodă non-statică sau o metodă statică utilizând contextul de obiect, aceasta va genera imediat E_DEPRECATED
eroare.
class helloWorld () static public hiWorld () $ hello = nou helloWorld (); $ Hello-> hiWorld (); // Înainte de PHP 5.6 E_STRICT eroare // Din PHP 5.6 eroare E_DEPRECATED
$ HTTP_RAW_POST_DATA
este depreciat acum. Ar trebui să folosim php: // input
in schimb.
Odată cu lansarea default_charset ()
configurare, opțiunea respectivă este depășită inconv
și mbstring
.
O listă a tuturor funcțiilor modificate din PHP 5.6 poate fi găsită în ultimul manual PHP.
O listă cu toate funcțiile noi din PHP 5.6 poate fi găsită în această secțiune a manualului PHP.
În timp ce echipa PHP lucrează la următoarea versiune de PHP, aș spune că PHP 5.6 a fost livrat cu o mulțime de îmbunătățiri și adăugiri de caracteristici și oferă una dintre cele mai ușoare upgrade-uri de la versiunile anterioare.
Nu uitați să ne informați despre orice întrebări sau comentarii pe care le puteți avea în feedul de mai jos.