PHP 8 – što je novo i vrijedi li ga nadograditi radi web stranica?



Pregled sadržaja

Php 8 je službeno objavljen i dostupan je za preuzimanje. Nova verzija donosi mnogo dugo očekivanih značajki.

Što je PHP?

PHP je programski jezik namijenjen programiranju web stranica. Kreirao ga je kanadski programer Rasmus Lerdorf 1994. radi potrebe izrade funkcionalnosti koja broji posjetu korisnika na svojoj privatnoj web stranici. PHP nije bio ciljano kreiran da postane novi programski jezik ali popularnost mu je sve više rasla i danas je najpopularniji programski jezik za izradu web stranica. Prema W3Techs statistikama upotrebe koristi ga 79,1% svih web stranica na internetu.

PHP je osnova svega na čemu počiva WordPress, popularna CMS platforma na čijem sustavu i mi izrađujemo web stranice. Kada netko poželi otvoriti web stranicu, PHP modul koji je instaliran na poslužitelju obrađuje skripte kojima je stranica programirana te generira HTML datoteku koju će preglednik otvoriti. Ta HTML datoteka potom poziva slike, videozapise, stilove (koje diktiraju kozmetiku web stranice) i razne druge datoteke. Konačan ishod je da se na ekranu prikaže web stranica.

Kako je PHP ono što pogoni web stranicu na najosnovnijoj razini, shodno tome, njegovo ažuriranje na posljednju verziju može biti značajna stvar. Nove verzije podržavaju modernu tehnologiju koja nam daje nove mogućnosti te znatno poboljšane performanse.

Broj koji opisuje verziju je cijeli novi broj (a ne samo povećanje sekundarnog broja verzije kao što bi npr. bilo 7.4), što prema semantičkom verzioniranju znači da verzija donosi veće promjene od kojih neke mogu biti prijelomne.

PHP 8

Dobar dio promjena nije bitan za autore i korisnike web stranica, neke promjene čak nisu previše bitne ni za PHP developere. Svaka nova verzija donosi pozitivne promjene, ponekad prilagodbe mogu uzrokovati probleme s postojećim kodom. Zastarjele funkcije i nekompatibilni kôd mogu slomiti web stranice jer uzrokuje da se sav kôd iza njega zaustavi, slično kao i domino kockice, sve je povezano. Posljedično time web stranica više ne funkcionira. Trebalo bi znati koje su važne promjene kako bi se mogle zamijeniti novim, optimiziranim metodama.

Ako je web stranica bila u toku s posljednjim verzijama, nadogradnja ne bi trebala biti odviše komplicirana. Većina promjena koje su bile zastarjele a mogle su biti prijelomne dogodile su se u prijašnjim verzijama 7.* a nova verzija 8 donosi nam prije svega neke nove značajke.

Pogledajmo neke od novotarija koje nam nova verzija donosi.

JIT kompiler

Programski jezici moraju kompajlirati kôd u izvršni (računalni) kôd. To je proces koji kodove koje pišemo mi ljudi transformira u jedinice i nule kako bi ih računalo moglo razumjeti. Tako rade programski jezici kao što su C++ ili Java. Kompajliraju se kodovi i spremaju kao izvršna datoteka koju računalo lako može pokrenuti i cijela stvar funkcionira veoma brzo.

S druge strane postoje interpretirani jezici. Oni ne kompajliraju kôd u izvršni već računalo taj kôd raščlanjuje, sastavlja i pokreće svaki puta kada se zatraži. PHP je jedan od interpretiranih jezika. Takav način rada je sporiji jer računalo svaki redak kôda iznova ponavlja u stvarnom vremenu što može dovesti do gubitka resursa procesa te dodanog vremena.

Jedna od najvažnijih značajki koje nam PHP 8 donosi je JIT (Just in Time Compiler). JIT nije izmislio PHP ali ga od sada podržava. Bili su pokušaji da ga se uvede još 2011. ali njegova implementacija ipak nije bila uključena u PHP jer nije bio zabilježen značajan porast performansi za uobičajene web aplikacije. S obzirom na to da je PHP verzija 7 dovela do raznih poboljšanja performansi, primijećeno je naknadno da je kao nekakav nusprodukt zabilježen i skok performansi na samom JIT-u. Shodno tome, tek je sada u PHP 8 konačno implementiran.

Značajka JIT-a je da kompajlira kôd izravno u računalni kôd te ga zatim izvršava direktno na procesoru. Pomoći u ubrzavanju performansi no razlika će se primijetiti kod aplikacija koje zahtijevaju intenzivan rad procesora, poput nekog 3D prikazivanja modela ili kompleksnih i velikih matematičkih računanja. Kod klasičnih web stranica se ipak neće primijetiti značajno ubrzanje no time se otvaraju nove mogućnosti programskog jezika i putevi za daljnji razvoj.

Jednostavnije definiranje i inicijalizacija varijabli

U objektnom orijentiranom programiranju, pomoću manje kôda možemo definirati varijable u klasi i to činimo direktno unutar konstruktora:

class Point {
  public function __construct(
    public float $x 0.0,
    public float $y 0.0,
    public float $z 0.0,
  ) {}
}

Imenovani argumenti

Prijašnjim pisanjem, argumenti funkcija morali su uvijek biti navedeni po redu čak i ako neki prethodni parametar ne bi trebali prenijeti u funkciju i tada smo trebali staviti vrijednost null. Sadašnjim načinom slobodno možemo imati proizvoljan redoslijed jer parametre ionako preciziramo te program zna na što se koji parametar odnosi. Slobodni smo i preskočiti parametar koji je opcionalan.

createUser(id: 1, username: ivan);
createUser(username: ivan, id: 1);

Nove funkcije

Na raspolaganju su nam neke nove funkcije. Primjerice, za provjeru postoji li unutar fraze (stringa) neka riječ, morali bi pisati ovako neki kôd:

if (strpos('Izrada web stranice', 'web') !== false) {
    echo 'true';
}

Nova funkcija str_contains nam mrvice olakša zadatak:

if (str_contains('Izrada web stranice', 'web')) { 
    echo 'true';
}

Sitnica ali je od srca 🙂 Manji kôd je uvijek pregledniji i bug-free.

Tu su još neke druge funkcije, kao provjera ako neka fraza započinje ili završava s nekim stringom:

str_starts_with('haystack', 'hay'); // true 
str_ends_with('haystack', 'stack'); // true

S druge strane, neke slabo bitne funkcije odlaze u zastaru i ako bi ih eventualno negdje još koristili, dobit ćemo upozorenje.

Kraće izraze podudaranja (match expression)

Umjesto da se koristi switch case koji može biti glomazan, novi način pisanja kôda je kraći i pregledniji. Nema više break statementa koji mora napraviti prekid nakon svake provjere i sve je sažeto na manjem mjestu. Samo u ovom primjeru je više nego dvostruko manji kôd. Ovo već postaje računalna poezija. 🙂

$operation = 'write';

// Stari način
switch ($operation) {
  case 'read':
    $message = 'Viewed!';
    break;
  case 'write':
    $message = 'Created!';
    break;
  case 'update':
    $message = 'Updated!';
    break;
  case 'delete':
    $message = 'Deleted!';
    break;
}

// Novi način
$message = match ($operation) {
  'read' => 'Viewed!',
  'write' => 'Created!',
  'update' => 'Updated!',
  'delete' => 'Deleted!',
}

Nullsafe operator

U slučajevima kada ne možemo biti sigurni je li definirana vrijednost varijable, sada možemo kraćim kôdom navesti zadanu vrijednost.

$а = $array['data']??'';

Također, omogućeno nam je kraće pisanje kôda kada moramo provjeriti puno ugniježđenih vrijednosti što nam pojednostavljuje rad i smanjuje mogućnost generiranja greške na stranici.

$country = $session?->user?->getAddress()?->country;

Nismo nipošto naveli sve promjene koje postoje, sve ih ionako možete pogledati u službenoj PHP dokumentaciji.

Nadogradnja PHP verzije

Sam postupak nadogradnje je vrlo jednostavan za stranice koje su smještene na klasičan hosting paket. U cPanelu je pod “Select PHP version” potrebno odabrati novu PHP verziju i to je to što se tiče nadogradnje, premda je još potrebno temeljito testirati kako sustav u administraciji, tako i kako se web stranica ponaša. Nije naodmet baciti pogled na to što se događa u pozadini servera te što sustav bilježi u log datoteke, pogotovo u slučaju da se dogode kakvi problemi kod izvršavanja programskog koda.

Premda je sama jezgra posljednje verzije WordPressa kompatibilna s novim vezijama PHP-a, ne treba nužno to biti slučaj i za dodatke (pluginove) i temu. U slučaju da se koristi veći broj dodataka potrebno je biti oprezan. Iako se pazi da nova funkcionalnost nikad ne naruši postojeće aplikacije, idealno bi bilo prvo napraviti nadogradnju na testnom serveru i ukoliko je sve proteklo bez problema, stvar se ponovi i na glavnom (live) webu.

Sažetak

Pomno promatramo sve novosti koje nam donose moderne tehnologije. Puno truda je uloženo u izgradnju PHP 8 verzije i jedva čekamo raditi na posljednjim novotarijama. Premda verzija 8 nije toliko pozitivno prijelomna kao što je to bio slučaj sa verzijom 7 koja je radikalno ubrzala procesuiranje web stranice, svakako preporučamo obaviti nadogradnju. Treba držati korak s modernim standardima i nova verzija omogućit će nam da pišemo kvalitetniji programski kôd i izgradimo robusnije web stranice koje slijede trendove industrije.