În ce an a ieșit PHP 7. Anunțarea tipurilor scalare

Merită să se mute la o nouă versiune de PHP 7.0? - Cu siguranta stă, nici măcar nu credeți - du-te!

În a șaptea versiune există o mulțime de inovații. Principalele sunt:

  • phpng kernel se bazează pe phpng. Noul kernel oferă o creștere a siturilor de productivitate de la 40%;
  • introduceți sugestii și valori de returnare. Acum, când declarați o funcție pentru fiecare variabilă, puteți specifica tipul dvs., precum și tipul de date care vor returna funcția. Tipuri disponibile: Int, float, șir și bool;
  • operatorul de comparare combinat și mult mai mult.

Unele extensii au fost eliminate în PHP 7:

  • mysql.

Deja în PHP 5.6.x, utilizarea acestor extensii a fost nedorită. În loc de "MySQL", utilizați "DOP" și în loc de Ereg → PREG.

Puteți să vă familiarizați mai detaliat cu noutăți PHP 7 pe pagina oficială.

Ar trebui să merg la PHP 7?

Pe acest moment Cel mai simplu lucru pe care îl puteți face pentru a crește performanța site-ului este de a merge la PHP 7.0.x. Câștigul de viteză depinde, de asemenea, de modul în care este scris proiectul dvs. Dacă încă mai îndoiți, arătați unele comparații:

Benchmark. Php 5.6 vs php 7 Pentru cadrele NECTO (Zend Framework, Magento, Drupal, MediaWiki, WordPress, Laravel, SugarCRM etc.):

Pentru toate cadrele, creșterea productivității este semnificativă. Să vedem ce este cazul cu funcțiile și desenele kernel-ului:

Benchmark. Php 5.6 vs php 7 Pentru funcțiile și desenele kernelului:

Dacă graficele vă convinse, puteți încerca să transferați site-ul dvs. la noua versiune a PHP și să experimentați creșterea proiectului real.

Colegii cu ElasticWeb au declarat că, înainte de a începe un nou server cu PHP 7, au lansat un proiect mare de stat care lucrează la Laravel 5. A fost un fel de test de performanță. versiune noua PHP și serverul ca întreg. Anterior, acest proiect a fost pe server cu PHP 5.6. După transferul site-ului, pagina a început să fie deschisă mult mai repede, în timp ce utilizarea resurselor a fost redusă la jumătate.

Pentru a pregăti trecerea la PHP 7, au folosit raportul asistent al migrației PHP 7 (Mar). Majoritatea CMS / cadru popular au deja compatibilitate cu PHP 7, astfel încât sarcina principală a fost redusă la testarea pluginurilor personalizate.

WordPress 4, Drupal 8/7 și ultima versiune Joomla este gata pentru PHP 7!

Buna!

3 decembrie a fost o versiune PHP 7. Am fost transferați pentru dvs. o descriere a produselor noi de pe pagina de documentare http://php.net/manual/en/migration70.new-features.php. Aceasta este prima parte.

Anunțarea tipurilor scalare

Acum se utilizează două tipuri de moduri de conversie: conversia implicită (coercitivă) și explicită (strictă).

Tipurile sunt disponibile pentru parametrii:

  • Șiruri (șir),
  • numere întregi (int),
  • comuniune plutitoare (plutitor),
  • variabilele booleene (bool).

Aceasta completează tipul de date stabilit în PHP 5: nume de clasă, interfețe, matrice (matrice) și call.

Rezultat:

Pentru a permite un mod strict de tastare, utilizați Directiva declarație la începutul dosarului:

Declară (strict_types \u003d 1)

Modul de tipare se aplică unui anumit fișier. Activarea scrisării stricte afectează ieșirea valorilor scalare, a valorilor de returnare, a funcțiilor PHP încorporate și a funcțiilor de extensie.

Definiția tipurilor de valori returnate

În PHP 7, a devenit posibilă declarând tipul de valoare de returnare. Acest lucru se corelează direct cu un nou mod de tastare: cu tastarea strictă, valorile de retur trebuie să se potrivească cu strictețe, altfel excepția va fi aruncată Eroare de scris.

Un set de tipuri de valori returnate este același ca și pentru argumente.

Rezultat:

Array (\u003d\u003e 6 \u003d\u003e 15 \u003d\u003e 24)

Operatorul de unificare cu valoare nulă

Operatorul de unificare cu nul (??) este introdus pentru a îmbunătăți lizibilitatea codului în cazul în care operatorul ternar și izset () este de obicei utilizat. Operatorul returnează primul operand dacă argumentul este definit și nu este egal cu NULL și cel de-al doilea operand în alte cazuri.

Operatorul "nava spațială"

Comparați două expresii, revenirea -1, 0 și 1, când primul argument este mai mic, egal sau mai mult din al doilea, respectiv. Comparația se face folosind regulile obișnuite de comparare ale tipurilor PHP.

unu; // 0 echo 1<=> 2; // -1 echo 2<=> unu; // 1 // Punct plutitor (float) ECHO 1.5<=> 1.5; // 0 ECHO 1.5<=> 2.5; // -1 echo 2.5<=> 1.5; // 1 // rânduri eco "A"<=> "A"; // 0 echo "A"<=> "B"; // -1 echo "b"<=> "A"; // 1?\u003e

Definiția matrice constante definește ()

Array-urile constante pot fi declarate utilizând definirea (). În PHP 5.6, acestea nu pot fi definite decât prin Directiva Const.

Clase anonime

Sprijin pentru anunțarea claselor anonime cu clasa nouă.. Acest lucru poate fi folosit pentru a decora obiecte de unică folosință fără a scrie o clasă întreagă.

logger; ) Funcția publică SetLogger (logger $ logger) ($ acest-\u003e logger \u003d $ logger;)) $ App \u003d Aplicație nouă; $ App-\u003e setlogger (log Funcție publică (String $ MSG) (ECHO $ \u200b\u200bMSG)); Var_dump ($ app-\u003e getlogger ()); ?\u003e.

Rezultat:

Obiect ( [E-mail protejat])#2 (0) {}

Simbolurile Unicode Escape

Simbolurile Unicode sunt setate de codul hexazecimal într-un șir dublu-citate sau herdoc-definiție. Adăugând una sau mai multe cifre "0" înainte ca codul de simbol să fie permis.

Echo "\\ u (aa)"; Echo "\\ u (0000AA)"; Echo "\\ u (9999)";

Rezultat:

ª ª // aceeași ca înainte, dar cu opțional lider 0 "s 香

Închidere :: Apel ()

Metoda de închidere :: Apel () este o modalitate mai productivă de a lega temporar contextul obiectului de închidere și apelul său.

x;); $ getx \u003d $ getxcb-\u003e bindto (nou A, "A"); // închiderea intermediară a ECHO $ \u200b\u200bGETX (); // php 7+ $ getx \u003d funcția () (returnați $ acest-\u003e x;); ECHO $ \u200b\u200bGETX-\u003e Apel (nou A);

Rezultat:

Restul inovațiilor se află în a doua parte. Rămâneți aproape.

Mergeți la PHP 7.0 sau așteptați? Așa că am crezut atât de mult, cântărit, prefăcut. Cu toate acestea, ieri a venit momentul în care era necesar să ia o decizie rapidă

Sa întâmplat că Maestrul Maestru al Oricineului, nici Hyloaca Sysadmin, nu vrea. Portalul a început să încetinească de la încărcătură. Vizitatori care au primit accesul la materiale închise și pur și simplu vizitatori care sunt simultan de 100k + la abonații portali, HelpDeske nu este capabil să lucreze în mod adecvat cu admin și să ofere asistență oamenilor

Ca rezultat, seara a fost efectuată cu PHP 5.6 pe PHP 7.0

Caracteristicile scurte ale serverului

  • OS: FreeBSD.
  • RAM: 5GB.
  • CPU: XEON E5335 2.00GHZ * 4 (kernels)

Deoarece este FreeBSD și păstrați în același timp, mai multe versiuni PHP nu este posibilă (de fapt, este posibil, dar va trebui să o ridice), Downym a fost doar 40 de minute care au luat demolarea PHP 5.6 și instalați PHP 7.0.

Apropo, avem încă un server pe Gentoo, care oferă o oportunitate. În prezent, PHP 5.6, 7.0, 7.1. Dar asta e la cuvânt

Și asta am făcut-o. Să ne uităm la graficele de zi în ziua de ieri și astăzi

Ceea ce nu sa schimbat

Ce sa schimbat

Ce ne-am ciocnit cu dificultăți

  • În actualul PHP 7.0 nu există un modul memcache. A trebuit să descarc port terț
  • Nici un modul MySQL. Pentru aceasta trebuie să fiți gata și în prealabil pentru a prevedea planul de tranziție la Mysqli. Mai mult sau mai puțin cadre moderne suportă Mysqli
  • Dacă utilizați PECL-PDFLIB, veți fi gata pentru ceea ce nu va funcționa. Folosim WKHTMLTOPDF.
  • O parte din portalul folosit MPDF. Nu funcționează cu PHP 7.0. Instalat proaspăt cu compozitor
  • A efectuat un cod de refactorizare ușoară

Ieșire

Cu același număr de vizitatori de portal, sarcina de pe server a scăzut de două ori

Alexander Black.

administrator de sistem

Potrivit unor studii, aproximativ 80% din toate site-urile sunt scrise pe ea. Și nu este ciudat, pentru că chiar și astfel de giganți de rețea ca În contact cu și Facebookau fost create cu ajutorul acestuia. Despre popularitate poate fi, de asemenea, judecată deoarece cererea "" este solicitată în motoarele de căutare mult mai des decât alte limbi. Deci, o cerere gazduire Perl. Salută. 150 – Cele menționate mai sus gazduire PHP.

Limba a fost creată în 1994 și a fost inițial un set de scripturi. De-a lungul timpului, scripturile au fost redone la interpret asupra S.

Principalele caracteristici și caracteristici ale limbii PHP:

  • abilitatea de a lucra cu diferite servere web ( IIS.);
  • ușor de învățare și flexibilitate în muncă;
  • suport pentru baze de date - , MSSQL, Oracle, Postgre, Mongodb si altii;
  • pentru OS Popular există pachete PHP adecvate, adică puteți crea site-uri;
  • compatibilitate cu cele mai multe servicii de găzduirefurnizate de furnizori. Puteți plasa cu ușurință site-ul scris pe PHP pe orice găzduire. Cum de a asigura PHP pe server? Sfatul nostru.
  • pHP nu sta în picioare și se dezvoltă constant, ceea ce atrage dezvoltatorii din întreaga lume.

Ce fel versiunea PHP. Sunt relevante în acest moment?

În drept, este considerată versiuni relevante ale PHP 4 și 5. Versiunea 4 are popularitatea proprie și este folosit pentru a scrie diverse aplicații web. PHP 5 are multe caracteristici suplimentare, dar, la rândul său, nu este complet compatibilă cu cea de-a patra versiune a limbii. prin urmare unele programe (scrise în PHP 4) nu vor putea lucra în mediul PHP 5. Deoarece instrumentele suplimentare pentru limba limbii sunt adesea folosite module. De exemplu, au fost dezvoltate module speciale pentru a lucra cu grafică sau module care implementează interacțiuni cu diferite baze de date.

După intrarea în a 5-a versiune a limbii, toată lumea se aștepta la al șaselea. Dar PHP 6 nu a fost niciodată capabilă să se implementeze, din cauza problemelor cu sprijinul Unicod, astfel încât în \u200b\u200b2010 a fost întreruptă dezvoltarea și implementarea acestei versiuni.

PHP 7 este o nouă versiune cu noi caracteristici.

Nu cu mult timp în urmă, 3 decembrie 2015, a fost lansată o nouă versiune a unui limbaj de programare popular -PHP 7.0.0. Aceasta a dat dezvoltarea seriei PHP 7. Limba a reușit deja să-și cucerească fanii pentru istoria existenței de douăzeci de ani. Limba de scripting a scopului general este utilizată pentru a crea diverse aplicații web, inclusiv scrierea CMS plătită și gratuită. De exemplu, Joomla!, Drupal, Wordpress și TP.

Mai departe discutați despre noile caracteristici PHP 7 Și ne vom da seama de ce dezvoltatorii îl așteptau atât de mult. La urma urmei, în ciuda criticilor frecvente ale acestei limbi, cei mai mulți furnizori de găzduire o susțin, inclusiv cele mai recente versiuni PHP. Limba este cea mai cerută de criteriile de utilizare. Noua versiune este, în esență, experimentală și bazată pe Phpng (următoarea generație PHP), principiul creșterii productivității se bazează pe o reducere a consumului de memorie.

Limba PHP 7 este proiectată cu adăugarea noii versiuni a motorului Zend. Dacă îl comparați cu versiunea anterioară de 5.6 (noua versiune a apărut în noiembrie a aceluiași an), atunci dezvoltatorii web ai limbii notează în primul rând performanța îmbunătățită a noii tehnologii: PHP 7 dublează bucata predecesorului.

Ia în considerare elementele,ce versiune nouă a PHP oferă :

  • deplin suport pe 64 de biți sisteme;
  • utilizarea memoriei este mult redusă;
  • adăugat funcționalitatea sintaxei abstracte;
  • cele mai multe erori fatale sunt transformate în excepții;
  • ierarhia de excepție îmbunătățită;
  • generator aleatoriu Numerele au devenit mai sigure;
  • clase anonime;
  • eliminat Outdated Sapis. Sapi / Aolserver, Sapi / Apache Sapi / Apache_Hooks, Sapi / Apache2Filter, Sapi / Caudidiu, Sapi / Continuitate, Sapi / Isaapi, Sapi / Milter, SAPI / NSAPI, SAPI / PHTTPD, SAPI / PI3WEB, SAPI / ROXEN, SAPI / THTTPD , Sapi / tux, sapi / webjames, ext / mssql și ext / sybase_ct);
  • opriți sprijinirea designerului în stilul PHP 4, în care numele constructorului coincide cu numele clasei;
  • creată metoda închidere :: Apel ();
  • În plus, OpenSSL există suport TLS Extension ALPN (Negocierea protocolului pentru aplicații) Pentru a se potrivi cu protocoalele la nivel de aplicație care sunt utilizate pentru a asigura o conexiune securizată. Aplicată în SPDY și HTTP / 2;
  • un operator al Uniunii cu NULL? ;
  • furnizarea unei grupări de definiții în declarația de utilizare (de exemplu, utilizați DoctrineConecollectionSexPr (comparație, valoare, compoziexpresie);) și multe altele.

Descărcați și familiarizați-vă cu toate avantajele noii versiuni PHP pe pagina OficialăDe asemenea, puteți descărca ghidul de migrare. Noua versiune - nu doar următoarea versiune a PHP, și începutul dezvoltării unui nou mod în limbile de programare. Pentru a lansa, a durat doi ani de evoluții zeloase, care au ajutat la crearea unui produs îmbunătățit.

Dacă sunteți în căutarea unei versiuni de încredere de încredere , Contactați-ne la companie Hyper Host.serverele noastre virtuale de găzduire susțin PHP 7. Sperăm că noi oportunități vor veni la gustul tău. Noi, la rândul nostru, vom fi bucuroși să vă ajutăm!

7435 ori. 1 astăzi văzută o dată (a)

PHP este un limbaj de programare care este utilizat în principal în dezvoltarea web, de regulă, în partea din spate. PHP are o istorie suficient de lungă - prima sa versiune a apărut cu mai bine de 20 de ani în urmă, în 1995. În acest timp au fost emise 7 versiuni PHP, ultimele dintre acestea a apărut în decembrie 2015. Despre ea și va fi discutată în acest articol.

Eliberarea PHP 7.0 a devenit o descoperire, așa cum sa bazat pe proiectul PHPNG - experimental și în curs de dezvoltare activ, numele căruia este decriptat ca "PHP următoarea generație" - "următoarea generație PHP". Această tehnologie ar putea fi utilizată în versiunile anterioare PHP, totuși, în PHP 7, a fost introdusă ca fiind fundamentală. Când este dezvoltat, scopul a fost stabilit pentru a spori performanța PHP, dar nu pierderea compatibilității.

Motorul Zend.

PHP 7 se bazează pe cea de-a treia versiune a motorului Zend în care a fost dezvoltat proiectul PHPNG.

Inovații

În primul rând, inovațiile din PHP 7 au afectat cele mai importante aplicații de parametri - această performanță și consumul de memorie.

Principala schimbare în care este menționată în primul rând în conversația despre PHP 7, acest lucru îmbunătățirea performanței: Indicatorii PHP 7 sunt aproximați la indicatoarele HHVM (dezvoltate de sistemul Facebook, ceea ce vă permite să accelerați transformarea codului PHP de mai multe ori). Nu ultimul motiv pentru aceasta a fost faptul că co-fondatorul tehnologiilor Zend (Companiile de kernel PHP) Zeev Suraski consideră HHVM ca fiind unul dintre concurenții lui Zend. Și dezvoltatorul principal al companiei PHP 7 Zend Technologies și Autorul Phpng, Dmitry Stans asigură că diferența de performanță a PHP 5.0 și PHP 7 pe Bench.Php de testare sintetică este de 14 ori. În practică, majoritatea utilizatorilor sunt înclinați să creadă că PHP 7 este de aproximativ două ori mai rapid decât versiunea anterioară.

HHVM folosește așa-numitul compilație JIT (Just-in-Time) pentru conversia codului - în ciuda faptului că JIT în versiunea 7 PHP nu a apărut, PHP 7 susține o migrare mai bună, ceea ce vă permite să îmbunătățiți performanța uneori . Este un nou nivel de productivitate Dmitri Stack Repere ca principală caracteristică a PHP 7.

Îmbunătățirea performanței a reușit să realizeze și datorită faptului că compilatorul generează acum un cod de octet mai spectaculos și mai scurt.

În zilele noastre, este extrem de important să ne gândim la utilizatori nu numai în dispozitive staționare, dar și mobile, astfel încât dezvoltatorii PHP 7 au îmbunătățit performanța motorului și consumul de memorie redus și au adăugat, de asemenea, capacitatea de a utiliza un depozit local local. În plus, PHP 7 vă permite să efectuați sarcini asincrone.

Apropo, dezvoltarea a ținut cont de tendințele populare de reducere a consumului de resurse ale planetei, așa că PHP 7 are abilitatea de a gestiona mai mult traficFolosind toate aceleași resurse de servere.

Functii noi

În PHP 7 există numeroase caracteristici noi, fiecare dintre acestea face ca dezvoltarea mai confortabilă și mai simplă. Apoi vă puteți familiariza cu unele dintre ele.

  • Două noi excepții (Excepție și eroare) - Dacă în versiunile PHP anterioare a fost imposibil să se ocupe de erorile fatale, atunci într-o nouă versiune, acțiunea care duce la această excepție, adică completarea scenariului nu se va întâmpla.
  • Clase anonime - PHP 7 suportă acest tip de clase, care este adesea folosit în C ++ și Java pentru a efectua funcții de apel invers. Aceste clase sunt utilizate în principal pentru a crea elemente simple:

setLogger (noul logger ()); // PHP 7+ cod $ util-\u003e SetLogger (noua clasa ($ MSG) (ECHO $ \u200b\u200bMSG;)));

Clasele anonime pot fi investite, dar ele nu vor fi disponibile proprietăți protejate sau private ale clasei externe.

  • Abilitatea de a indica tipuri scalare (Sugestii de tip scalar) - În versiunile anterioare, a fost posibilă indicarea tipului de valori primite; Acum puteți indica, de asemenea, tipuri scalare:

Rânduri ("șir"), numere (`int"), bolovani (`bool ').

Această inovație urmărește să faciliteze scrierea codului și să-și îmbunătățească lizibilitatea. Dar utilizarea acestor valori ca și numele clasei este interzisă categoric, deoarece Acest lucru poate duce la erori critice.

  • Design de utilizare abreviată - oportunitatea a apărut în PHP 7 combinați declarația de utilizare a grupurilorAcest lucru va fi, fără îndoială, afectat pozitiv atât la viteze, cât și la percepția codului:
  • Operatori noi Operatorul de coalarescing null (??) și Operatorul de comparare combinat. (<=>De asemenea, el este cunoscut sub numele de operator de navigație) - acești doi operatori noi, pe care unii se referă la zahăr sintactic ajută la scrierea unui cod mai concis și mai ușor de înțeles.

Operatorul de coalarescing nul este un operator sindical care verifică dacă variabila există și returnează valoarea (sau valoarea implicită):

$ Action \u003d $ _post ["acțiune"] ?? "index";

Operatorul de comparare combinat este un operator de comparație care este util pentru utilizarea în funcții de apel invers pentru USort (). Compară două valori și, în funcție de rezultat, returnează -1, 0 sau 1:

Funcția de comandă_func ($ a, $ b) (returnați $ a<=> $ B; )

Prioritatea acestei operațiuni este egală cu prioritățile altor operațiuni de comparație și nu poate fi asociată cu provocarea anterioară, deoarece Acesta este un operator non-abasociativ.

  • Funcţie Afirmat ()- În PHP 7, această funcție este procesată într-un mod special de a exclude cheltuielile generale; Puteți să o utilizați pentru depanare și dezactivați suplimentar.
  • Filtrare nestemat () - Această inovație va asigura siguranța serializării obiectelor. Dezvoltatorul va fi capabil să determine ce clase ar trebui tratate și care nu sunt.
  • Reprezentare numere întregi sub formă de 64 de biți În PHP 7 pentru Windows X64: Acum PHP acceptă șiruri de caractere mai lungi de 231 octeți în ansambluri de 64 de biți.
  • Delegația generatoarelor - cu ajutor Generatorul complex poate fi împărțit în mai multe mai mici. Ca și alte inovații, această inovație vizează scrierea unui cod mai curat și convenabil pentru reutilizare.
  • Apariția unei noi clase Intră. - Crește caracteristica bibliotecii stabilită pentru a localiza componentele internaționale pentru aplicațiile Unicode și are o metode de clasă și un confondent care lucrează cu Unicode.
  • Abilitatea de a defini matrice ca valori constante care sunt declarate prin definirea ().
  • Abilitatea de a atribui cuvinte cheie rezervate la numele metodelor.
  • Apariția unui nou identificator al valorilor simple php_int_min.

În ceea ce privește vechile funcții, a fost exclusă partea din cele mai nerevendicate caracteristici: de exemplu, ASP și etichetele de script au fost eliminate, precum și expresii regulate compatibile cu POSIX și extensia ext / mysql.

PHP și servere web

PHP este utilizat pe scară largă atunci când scrie o varietate de aplicații web, deoarece Această limbă este compatibilă cu diverse servere web (Apache, Nginx, IIS), baze de date (MySQL, Postgre, Mongodb, etc.), precum și sisteme de operare.
Prin urmare, inovațiile în mod tradițional au fost atinse de limbă ca întreg, ci și cele ale partidelor sale care sunt asociate cu găzduirea.

În primul rând, a fost introdus PHP 7 Sintaxă abstractă (AST) - un arbore de sintaxă abstract, care este o legătură intermediară în procesul de compilare. Este pe acest model că un analizor de sintaxă este acum fondat. Datorită acestui lucru, acum puteți crea un cod de operare mai productiv.

O altă inovație este Sintaxă variabilă uniformă - Sintaxă universală pentru variabile. Acest lucru permite, pe de o parte, să rezolve unele dintre inconsecvențele asociate cu calcularea valorilor variabile, dar, pe de altă parte, creează necesitatea de a rescrie unele părți rar folosite ale codului.

Să ne întoarcem încă o dată la o creștere a performanței PHP 7: este favorabilă reflectă asupra funcționalității întregii găzduire, deoarece acestea vor putea crește numărul utilizatorilor lor fără a crește numărul de servere sau alte îmbunătățiri.

Unul dintre motivele îmbunătățirii performanței este optimizarea structurii datelor interneCe a îmbunătățit foarte mult procesul de lucru cu memoria.

Este imposibil să nu spuneți despre unele probleme de compatibilitate înapoi care pot apărea la trecerea la PHP 7. De exemplu, nu este posibilă utilizarea mai multor expresii implicite în comutator, deoarece În caz contrar, veți vedea o greșeală. Cu toate acestea, în general, aceste probleme sunt nesemnificative în contextul acestor noi caracteristici care oferă PHP 7.

Ieșire

Eliberarea PHP 7 nu este doar lansarea noii versiuni PHP, ci un anumit punct de plecare pentru următoarele versiuni PHP ale noii generații. Rezultatele unei multitudini de inovații PHP 7 au devenit un cod mai curat, convenabil și de înțeles, crește semnificativ productivitatea și multe altele pe care le puteți evalua independent prin actualizarea serverului virtual la a șaptea versiune a PHP.