SR

PHP 8.1 – Šta je novo?


PHP 8.1
09.12.2021    17:37

PHP 8.1 – Šta je novo?

25.11.2021. – tačno godinu dana nakon verzije 8.0 izašla je i PHP 8.1 verzija, koja pored novina u sintaksi donosi i znatno veću brzinu.

Sa gledišta vlasnika sajta koji koristi Laravel ili WordPress, bitno je napomenuti, budući da je 8.1 i dalje novitet, većina plugina i dodataka nije detaljno testirana ili kompatibilna sa novom verzijom, te ukoliko se sada odlučite za prelazak na PHP 8.1, dobro istestirajte funkcionalnost sajta.

UNLIMITED.RS je na većinu servera implementirao PHP 8.1 te već sada možete testirati svoje aplikacije.


5 stvari koje treba da znate o PHP 8.1

PHP 8.1 uvodi Enums, jedne od najčešće zahtevanih i najisčekivanijih stvari za PHP jezik. Takođe uvode se i Fibers, koji su najznačajniji korak ka odvajanju PHP-a od tradicionalnog zahtev-odgovor obrasca.

 

1. Poboljšanje brzine

Zahvaljujući više optimizacija unutar samog PHP jezika, brzina renderovanja stranice je umnogome unapređeno. PHP navodi da je poboljšanje od čak 23% na Symphony Demo Aplikaciji i 3.5% na WordPress instalaciji (iako poslednja verzija WordPress-a još uvek zvanično ne podržava PHP 8.1). Bitna napomena je da za razliku od PHP 8.0 ova poboljšanja sada ne zavise od upotrebe JIT (just-in-time) kompajlera, već od samog koda PHP 8.1.

Symfony Demo App request time
Symfony Demo App vreme potrebno za izvršavanje zahteva: 25 x 250 zahteva u sekundi

Takođe, autor Dmitry Stogov je objavio da je na 8.1 verziji od 5-8% poboljšanje performansi za opcache modul, poboljšanje koje naziva “inheritance cache”. Ovi noviteti omugućavaju keširanje linkova između klasa, slično preučitavanju klasa na verziji 7.4


 

2. Nove funkcije i opcije

Bolja brzina renderovanja stranice nije jedini novitet na PHP 8.1 verziji. Postoji više novih funkcija a ovo su samo neke od njih:

 

Enums

Enumeracije ili skraćeno Enums su brojivi tip sa fiksnim brojem vrednosti. Primer za predefinisane Enums je špil karata sa četiri simbola koji su nepromenjivi: tref, pik, herc, karo.

primer deklarisanje Enums:

enum Suit {
   case Clubs;
   case Diamonds;
   case Hearts;
   case Spades;
}

Sa Suit Enumom sada možemo navesti tipove prilikom korišćenja Suit vrednosti:

function pick_card(Suit $suit) {}
pick_card(Suit::Clubs);
pick_card(Suit::Diamonds);
pick_card(Suit::Hearts);
pick_card(Suit::Spades);

 

Fiber

Fibers ili “zeleni threadovi” su vrlo koristan način za startovanja/stopiranja dela koda, i tako paralelno izvršavanje više stvari. Popularni framework kao što su Amphp i ReactPHP će dosta korisitti Fibers u budućnosti zbog svoje praktičnosti i brzine.

Slikoviti prikaz upotrebe Fibera možemo pokazati slanjem 3 zahteva ka drugom serveru, svaki zahtev ima svoju boju, obojeni deo je vreme izvršavanja koda, dok je isprekidani deo vreme čekanja na odgovor od servera ka kome šaljemo zahtev.

U PHP verzijama do 8.0 izvršavanje ovih istovremenih zahteva izgleda ovako:

PHP 8.1

Dakle svaki naredni zahtev čeka da se prethodni završi.

Dok od PHP 8.1 sa Fibers ovo izvršavanje zahteva je istovremeno i time se smanjuje vreme izvršavanja jer se optimalnije koristi vreme čekanja.

PHP 8.1

Paralelno izvršavanje je i do sada bilo moguće na PHP-u upotrebom yield i generatora, međutim Fibers donose drastično unapređenje jer su dizajnirani upravo za ovu upotrebu.

 

Readonly properties

Readonly vrednosti mogu biti samo čitane, dakle definišu se jednom i više ne menjaju vrednost.

Primer:

class PostData { 
     public function __construct( 
         public readonly string $title,
         public readonly DateTimeImmutable $date, 
     ) {} 
}

Prilikom pokušaja promene Readonly propety javlja se greška

$post = new Post('Title', /* … */); 

$post->title = 'Other'; 

Error: Cannot modify readonly property Post::$title

 

3. Druge funkcije vredne spomena

Kao što smo ranije napomenuli, lista novih funkcija na PHP 8.1 verziji je poprilična i da bismo svaku pojedinačno naveli trebalo bi nam više od jednog teksta, te ćemo samo nabrojati one vredne pomena:

▪ never tip

▪ final klasne konstante

▪ fsync i fdatasync funkcije

▪ array_is_list funkcija

▪ $_FILES: nova full_path vrednost za dodavanje fajlova

▪ MYSQLI_REFRESH_REPLICA nova MySQLi konstanta – reč replica umesto rasno neprihvatljive reči slave


 

4. Kako podesiti PHP 8.1 na cPanelu

Za sve UNLIMITED.RS Web hosting korisnike na cPanelu će unutar PHP selektora uskoro biti dostupna verzija PHP 8.1 te će svi koji su zainteresovani moći da je koriste na svojim sajtovima.

Uputstvo za promenu PHP verzije možete videti ovde: Kako da promenim PHP verziju ili uključim ekstenziju?


 

5. Deprecated funkcije

I na kraju, lista depricated funkcija, INI direktiva i metoda:

▪ mysqli::get_client_info method, mysqli_get_client_info($param)

▪ Serializable

▪ date_sunrise, date_sunse

▪ strptime

▪ mhash*()

▪ filter.default, filter.default_options

▪ PDO::FETCH_SERIALIZE

▪ auto_detect_line_endings

▪ strftime, gmstrftime

▪ mysqli_driver->driver_version

 

 

unlimited.rs web hosting

Mi smo web hosting provajder iz Beograda. Kroz naše objave na blogu trudimo se da pričamo o korisnim i praktičnim temama na jeziku adaptiranim za sve čitaoce. Prenosimo praktična iskustva i neograničeno znanje za sve!

Imaš pitanje ili komentar?

Uneseni podaci moraju biti validni

Vaša email adresa neće biti objavljena. Sva polja su obavezna.

  • Pošto mi je WordPress sajt, znam da nemaju verziju na novi PHP 8.1, da li ja mogu da primenim pvu novu verziju na zadnji ažurirani wordpress, koji je i dalje za 7 komtibilan? Hvala na odgovpru.

    • Naš savet je da testirate, a ako sajt ne bude funkcionisao najlakše je vratiti na raniju verziju, promena se odvija za par sekundi. WordPress 5.8 definitivno podržava PHP 8.1, ali 90% plugina i tema još nije prilagođeno, pogotovo manje poznati.

Želite da stupite u kontakt sa nama?

KONTAKTIRAJTE NAS
+381 11 428 08 08
[email protected]
Pokreni odmah