PHP 8.4 donosi niz značajnih poboljšanja i novih funkcionalnosti koje će ubrzati rad vaših stranica, a programerima omogućiti razvoj još učinkovitijih i sigurnijih aplikacija.
Među najvažnijim novitetima nalazimo, između ostalog, novi način kontrole svojstava klasa, nove funkcije za upravljanje nizovima (array_find, array_find_key, array_any, array_all), poboljšanu podršku za šifriranje putem proširenja Sodium (AEGIS-128L i AEGIS-256), kao i niz unapređenja u obradi višebajtnih nizova znakova i regularnih izraza. Pozivamo vas da isprobate novu verziju PHP-a u svojim projektima! U nastavku ćete pronaći detaljan opis najvažnijih promjena i novosti u PHP 8.4.
Brže performanse PHP-a 8.4 – što to znači za vašu stranicu?
PHP 8.4 donosi niz optimizacija koje omogućuju bržu obradu skripti i poboljšanu izvedbu web stranica. Brže učitavanje = zadovoljniji korisnici. Zahvaljujući optimiziranom izvršavanju skripti u PHP-u 8.4, vaša stranica će se učitavati znatno brže. To ima velik utjecaj na korisničko iskustvo – istraživanja pokazuju da samo 1 sekunda kašnjenja može dovesti do frustracije i napuštanja stranice. Poboljšane performanse izravno utječu na:
- Bolje korisničko iskustvo
- Nižu stopu napuštanja stranice
- Dulje zadržavanje korisnika na stranici
- Višu stopu konverzije
Brzina učitavanja stranice također je važan čimbenik rangiranja na Googleu. Pretraživači preferiraju brze stranice koje korisnicima pružaju dobro iskustvo.

Property Hooks u PHP 8.4 – novi način za kontrolu svojstava klasa
PHP 8.4 donosi vrlo zanimljivu novost – property hooks. To je mehanizam koji omogućuje veću kontrolu nad time kako se svojstva u PHP klasama čitaju i zapisuju.
Što su property hooks?
Property hooks omogućuju definiranje ponašanja prilikom pristupa svojstvima klase. Možemo odrediti što će se dogoditi tijekom:
- čitanja svojstva (hook get)
- zapisivanja svojstva (hook set)
Osnovna sintaksa izgleda ovako:
class User {
public string $email {
get { /* kod izvršen prilikom čitanja */ }
set ($value) { /* kod izvršen prilikom zapisivanja */ }
}
}
Validacija prilikom zapisivanja:
class User {
public string $email {
set ($value) {
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException('Neispravan email');
}
$this->email = $value;
}
}
}
Modifikacija prilikom čitanja:
class User {
public string $email {
get {
return 'mailto:' . $this->email;
}
}
}
Property hookovi također omogućuju stvaranje virtualnih svojstava koja nemaju neposredni ekvivalent u memoriji:
class User {
public string $fullName {
get => $this->firstName . ' ' . $this->lastName;
set {
[$this->firstName, $this->lastName] = explode(' ', $value, 2);
}
}
private string $firstName;
private string $lastName;
}
Prednosti property hookova
- Omogućuju validaciju i modifikaciju vrijednosti izravno prilikom definiranja svojstva
- Eliminiraju potrebu za stvaranjem getter-a i setter-a
- Omogućuju definiranje svojstava u sučeljima
- Pružaju veću kontrolu nad stanjem objekta
Na što treba obratiti pažnju?
- Ne rade dobro s poljima – modifikacije na mjestu (npr. $obj->array[] = 1) ne pokreću hook
- Zadane vrijednosti svojstava ne prolaze kroz hook set
- Treba oprezno koristiti reference s hookovima
Nove funkcije array_find, array_find_key, array_all i array_any
PHP 8.4 uvodi četiri nove funkcije za rad s poljima koje značajno pojednostavljuju često izvođene operacije na poljima. Nove funkcije omogućuju pretraživanje elemenata koji zadovoljavaju određene kriterije te provjeru ispunjavaju li svi ili bilo koji element polja zadani uvjet.
Prvi par novih funkcija – array_find() i array_find_key() – služe za pronalaženje prvog elementa u polju koji zadovoljava zadani uvjet. array_find() vraća vrijednost pronađenog elementa, dok array_find_key() vraća njegov ključ. Ako nijedan element ne zadovoljava uvjet, obje funkcije vraćaju null.
Primjer upotrebe:
$numbers = [1, 3, 5, 8, 10];
// Pronađi prvi parni broj
$firstEven = array_find($numbers, fn($n) => $n % 2 == 0); // Vraća: 8
// Pronađi ključ prve parne brojke
$firstEvenKey = array_find_key($numbers, fn($n) => $n % 2 == 0); // Vraća: 3
Drugi par funkcija – array_all() i array_any() – omogućuje provjeru zadovoljavaju li svi ili bilo koji element polja određeni uvjet. array_all() vraća true samo ako svi elementi zadovoljavaju uvjet, dok array_any() vraća true ako barem jedan element zadovoljava uvjet.
Primjer upotrebe:
$emails = ['user@example.com', 'admin@example.com'];
// Provjeri jesu li svi elementi ispravne email adrese
$allValid = array_all($emails, fn($e) => filter_var($e, FILTER_VALIDATE_EMAIL)); // Vraća: true
// Provjeri sadrži li bilo koji element "admin"
$hasAdmin = array_any($emails, fn($e) => str_contains($e, 'admin')); // Vraća: true
Ove nove funkcije značajno pojednostavljuju kod i eliminiraju potrebu za pisanjem vlastitih petlji za pretraživanje polja. Posebno su korisne pri filtriranju podataka i validaciji.
BCMath: Nova funkcija bcdivmod u PHP 8.4
U PHP 8.4 uvedena je nova funkcija bcdivmod u BCMath ekstenziji, koja omogućuje istovremeno izvođenje dijeljenja i izračunavanje ostatka pri dijeljenju za brojeve bilo koje preciznosti.
Ova funkcija je posebno korisna u situacijama kada trebamo i kvocijent i ostatak pri dijeljenju, jer omogućuje izbjegavanje potrebe za zasebnim pozivima funkcija bcdiv i bcmod. Time kod postaje učinkovitiji i čitljiviji.
Primjer upotrebe:
$rezultat = bcdivmod('42', '10'); // Vraća polje ["4", "2"]
// gdje je "4" kvocijent, a "2" je ostatak pri dijeljenju
Funkcija prima sljedeće parametre:
- $num1 – djeljenik kao string,
- $num2 – djelitelj kao string,
- $scale – opcionalna preciznost za ostatak pri dijeljenju (po defaultu koristi se globalna preciznost).
Ako pokušamo dijeliti s nulom, funkcija će baciti iznimku DivisionByZeroError. U slučaju neispravnih ulaznih podataka (npr. nizova koji nisu brojevi) bit će bačena iznimka ValueError.
BCMath je vrlo korisna ekstenzija koja pojednostavljuje rad s preciznim matematičkim izračunima u PHP-u, posebno u financijskim i računovodstvenim aplikacijama.
Nove funkcije mb_ucfirst i mb_lcfirst
PHP 8.4 uvodi dvije nove funkcije u mbstring biblioteku – mb_ucfirst() i mb_lcfirst(), koje omogućuju sigurnu obradu višebajtnih znakova pri promjeni veličine prvog znaka u nizu.
Funkcija mb_ucfirst()
Funkcija mb_ucfirst() mijenja prvi znak niza u veliko slovo, uz pravilnu obradu višebajtnih znakova. To je sigurnija alternativa za standardnu funkciju ucfirst().
Primjer upotrebe:
$text = "brod plovi";
echo mb_ucfirst($text); // Prikazat će: "Brod plovi"
Funkcija mb_lcfirst()
Funkcija mb_lcfirst() mijenja prvi znak niza u malo slovo, također uz pravilnu obradu višebajtnih znakova.
Primjer:
$text = "KORNJAČA";
echo mb_lcfirst($text); // Prikazat će: "kORNJAČA"
Prednosti novih funkcija:
- pravilna obrada dijakritičkih znakova i drugih višebajtnih znakova,
- usklađenost s Unicode pravilima za velika i mala slova,
- mogućnost određivanja kodiranja znakova putem opcionalnog parametra $encoding,
- bolja alternativa za standardne funkcije ucfirst() i lcfirst() pri radu s tekstom koji sadrži znakove izvan ASCII-a.
Nove funkcije su posebno korisne pri radu s tekstovima na jezicima koji koriste dijakritičke znakove, kao i pri internacionalizaciji aplikacija.
Nove funkcije mb_trim, mb_ltrim i mb_rtrim u PHP 8.4
PHP 8.4 uvodi dugo očekivane funkcije mb_trim, mb_ltrim i mb_rtrim, koje su višebajtni ekvivalenti postojećih funkcija trim, ltrim i rtrim. Ovo je važno proširenje mogućnosti obrade višebajtnih nizova znakova u PHP-u.
Glavne značajke novih funkcija
Nove funkcije omogućuju sigurno uklanjanje praznih znakova (ili drugih određenih znakova) s početka i kraja niza znakova uz pravilnu obradu višebajtnih znakova. Za razliku od standardnih funkcija trim(), nove funkcije mb_trim() pravilno obrađuju Unicode znakove i različita kodiranja.
Zadano ponašanje
Funkcije mb_trim zadano uklanjaju ne samo standardne prazne znakove (prostor, tabulatore, znakove novog reda), već i znakove iz Unicode bloka Z te nekoliko drugih posebnih znakova. To pruža veću fleksibilnost u usporedbi sa standardnim funkcijama trim().
Prednosti novih funkcija:
- sigurna obrada višebajtnih znakova i Unicode-a,
- mogućnost određivanja vlastitog skupa znakova za uklanjanje,
- opcionalni parametar za kodiranje koji omogućuje rad s različitim kodiranjima znakova,
- bolja kompatibilnost s međunarodnim pismima.
Nove funkcije su posebno korisne u višejezičnim aplikacijama i svuda gdje se radi s tekstom koji sadrži znakove izvan ASCII-a. Njihovo uvođenje značajno olakšava rad PHP programerima koji razvijaju aplikacije koje podržavaju različite jezike i pisane sustave.
Nove mogućnosti CURL-a u PHP 8.4
Nove opcije za debugiranje
PHP 8.4 uvodi novu opciju CURLOPT_DEBUGFUNCTION, koja omogućuje postavljanje vlastite callback funkcije za hvatanje informacija za debugiranje tijekom izvođenja CURL zahtjeva. Ovo je posebno korisno kada je potrebna veća kontrola nad načinom obrade informacija za debugiranje. Callback funkcija se poziva više puta tijekom izvođenja CURL zahtjeva i može odlučiti što učiniti s tim informacijama.
Nove informacije o funkcijama u curl_version()
Funkcija curl_version() u PHP 8.4 vraća dodatni niz feature_list koji sadrži popis CURL funkcija i informaciju o tome jesu li one podržane. Ovo olakšava provjeru je li određena funkcionalnost (npr. HTTP/2, HSTS itd.) dostupna u određenoj CURL instalaciji. Ovo je preglednije od provjere bitne maske funkcija koja je vraćana u ranijim verzijama.
Nova opcija CURLOPT_TCP_KEEPCNT
PHP 8.4 uvodi novu opciju CURLOPT_TCP_KEEPCNT, koja omogućuje postavljanje maksimalnog broja pokušaja za održavanje TCP keep-alive veze. Zadana vrijednost je 9, ali je moguće povećati ili smanjiti ovu vrijednost prema potrebi. Ova opcija omogućuje veću kontrolu nad ponašanjem TCP keep-alive veza u kombinaciji s drugim opcijama poput CURLOPT_TCP_KEEPALIVE.
Nova opcija CURLOPT_PREREQFUNCTION
U PHP 8.4 dodana je nova opcija CURLOPT_PREREQFUNCTION koja omogućuje postavljanje vlastite callback funkcije koja odlučuje treba li se zahtjev nastaviti ili prekinuti. Funkcija se poziva nakon uspostavljanja početne veze, ali prije slanja stvarnog zahtjeva. Ovo je korisno u situacijama kada aplikacija mora odlučiti hoće li nastaviti vezu na temelju izvorišne i odredišne IP adrese i porta.
Nova opcija CURLOPT_SERVER_RESPONSE_TIMEOUT
PHP 8.4 uvodi novu konstantu CURLOPT_SERVER_RESPONSE_TIMEOUT koja zamjenjuje zastarjelu CURLOPT_FTP_RESPONSE_TIMEOUT. Ona omogućuje određivanje maksimalnog vremena čekanja na odgovor servera, ne samo za FTP, već i za druge protokole poput SFTP, SCP, IMAP, POP3 i SMTP. Interno obje konstante imaju istu vrijednost (112).
Novi načini zaokruživanja u funkciji round() u PHP 8.4
PHP 8.4 uvodi četiri nova načina zaokruživanja u funkciji round(), koja značajno proširuju mogućnosti preciznog zaokruživanja brojeva u PHP aplikacijama. Pogledajmo nove načine i njihovu primjenu.
Novi načini zaokruživanja
PHP 8.4 dodaje sljedeće nove opcije postojećim načinima zaokruživanja:
- PHP_ROUND_CEILING – zaokružuje broj na najbliži veći cijeli broj. Na primjer, 1.1 i 1.5 bit će zaokruženi na 2, dok će -1.1 i -1.5 biti zaokruženi na -1.
- PHP_ROUND_FLOOR – zaokružuje broj na najbliži manji cijeli broj. Na primjer, 1.1 i 1.9 bit će zaokruženi na 1, dok će -1.1 i -1.9 biti zaokruženi na -2.
- PHP_ROUND_TOWARD_ZERO – zaokružuje broj prema nuli. Na primjer, 1.9 i 1.1 bit će zaokruženi na 1, dok će -1.9 i -1.1 biti zaokruženi na -1.
- PHP_ROUND_AWAY_FROM_ZERO – zaokružuje broj dalje od nule. Na primjer, 1.1 i 1.9 bit će zaokruženi na 2, dok će -1.1 i -1.9 biti zaokruženi na -2.
Prednosti novih načina zaokruživanja
Novi načini zaokruživanja donose brojne prednosti:
- Veća preciznost i kontrola nad načinom zaokruživanja brojeva u financijskim i znanstvenim aplikacijama
- Kompatibilnost s drugim programskim jezicima i sustavima koji koriste slične metode zaokruživanja
- Mogućnost prilagodbe zaokruživanja specifičnim poslovnim zahtjevima
Primjer upotrebe:
$broj = 3.14; echo round($broj, 0, PHP_ROUND_CEILING); // Rezultat: 4 echo round($broj, 0, PHP_ROUND_FLOOR); // Rezultat: 3 echo round($broj, 0, PHP_ROUND_TOWARD_ZERO);// Rezultat: 3 echo round($broj, 0, PHP_ROUND_AWAY_FROM_ZERO); // Rezultat: 4
Podrška za AEGIS-128L i AEGIS-256
U PHP 8.4 dodana je podrška za nove algoritme šifriranja AEGIS-128L i AEGIS-256 u ekstenziji Sodium. Ovo predstavlja značajno poboljšanje u sigurnosti i performansama šifriranja u PHP-u.
Što je AEGIS?
AEGIS je obitelj autentificiranih algoritama šifriranja temeljenih na AES-u, koji nude bolje performanse od popularnog AES-GCM. Podrška za AEGIS u PHP 8.4 dostupna je ako je ekstenzija Sodium kompajlirana s libsodium verzije 1.0.19 ili novije.
Nove funkcije i konstante
PHP 8.4 uvodi šest novih funkcija i četiri nove konstante za podršku algoritmima AEGIS. Za AEGIS-128L dostupne su sljedeće funkcije:
sodium_crypto_aead_aegis128l_keygen()
– generira ključ,sodium_crypto_aead_aegis128l_encrypt()
– šifrira podatke,sodium_crypto_aead_aegis128l_decrypt()
– dešifrira podatke.
Analogne funkcije postoje i za AEGIS-256.
Primjer upotrebe:
Evo jednostavan primjer šifriranja pomoću AEGIS-128L:
// Generiranje ključa
$key = sodium_crypto_aead_aegis128l_keygen();
// Generiranje nonce-a
$nonce = random_bytes(16);
// Šifriranje poruke
$message = "Tajna poruka";
$encrypted = sodium_crypto_aead_aegis128l_encrypt($message, "", $nonce, $key);
// Dešifriranje
$decrypted = sodium_crypto_aead_aegis128l_decrypt($encrypted, "", $nonce, $key);
Prednosti AEGIS-a
Uvođenje AEGIS-a donosi nekoliko značajnih prednosti:
- znatno bolja učinkovitost u usporedbi s AES-GCM,
- visoka razina sigurnosti zahvaljujući autentificiranom šifriranju,
- kompatibilnost s modernim kriptografskim standardima.
PHP 8.4 – dostupnost na cyber_Folksu
Na našim shared paketima i serverima s našom administracijom – s cPanelom – već je dostupna PHP verzija 8.4.4.
Treba imati na umu da je PHP 8.4 nova verzija i da sve aplikacije možda neće biti u potpunosti kompatibilne s njom. Prije ažuriranja na PHP 8.4 preporučujemo:
- izradu sigurnosne kopije stranice,
- temeljito testiranje rada aplikacije u testnom okruženju,
- provjeru kompatibilnosti korištenih dodataka i pluginova,
- pažljivo uvođenje promjena u produkcijskom okruženju.
Ako nakon ažuriranja dođe do problema, uvijek se možete vratiti na prethodnu, stabilnu verziju PHP-a putem administracijskog panela.
PHP 8.4 – sažetak
Nova verzija PHP 8.4 nije samo skup tehničkih poboljšanja – to su stvarne prednosti za vašu stranicu i njezine korisnike. Brži rad skripti izravno se odražava na:
- kraće vrijeme učitavanja stranice – čak do 20% brže u usporedbi sa starijim verzijama,
- bolje pozicioniranje na Googleu – brzina stranice jedan je od ključnih faktora za rangiranje,
- veće zadovoljstvo korisnika – 53% posjetitelja napušta stranicu ako se učitava duže od 3 sekunde,
- višu konverziju – prema istraživanjima, svaka sekunda kašnjenja može smanjiti konverziju čak za 7%.
Dodatno, nove sigurnosne funkcije poput AEGIS-a ili poboljšana podrška za šifriranje čine vašu stranicu bolje zaštićenom od suvremenih prijetnji. Ažuriranje na PHP 8.4 investicija je u budućnost vaše stranice.
U cyber_Folksu neprestano pratimo razvoj tehnologije i implementiramo najnovija rješenja kako bismo našim korisnicima osigurali najvišu kvalitetu hosting usluga. PHP 8.4 je sljedeći korak u tom smjeru koji će pomoći vašoj stranici da radi još brže i sigurnije.
Preporučeno za tebe
No SLA? Good luck!
Da li biste kupili automobil bez garancije, TV prijemnik, osobno računalo ili nešto drugo? Takvo nešto vam sigurno ne bi palo na pamet. Slične garancije postoje i kod pružatelja telekomunikacijskih i internetskih usluga – a zovemo ih Service Level Agreement (SLA ) tj. Ugovor o razini pružanja usluga).
Kada odabrati klasični hosting, a kada VPS?
Uvod Ako planirate vlastitu web stranicu ili online trgovinu, vjerojatno se pitate koja bi vrsta hostinga bila najbolja. Najčešće opcije uključuju klasični hosting, managed VPS server, i za naprednije korisnike – root VPS server. Donosimo vam pregled i najvažnije razlike među njima kako bismo vam pomogli da donesete pravu odluku. Ne brinite – čak i […]
8 osnovnih razina sigurnosti u hostingu
Unatoč svim znanjima, vještinama i naporima bilo koje web hosting tvrtke, sigurnost web servera uvijek je na neki način ugrožena. Razlog tome leži u činjenici da je sigurnost zajednički posao u kojem sudjeluju vlasnik korisničkog računa, web hosting tvrtka koja omogućuje prostor na serveru kao i datacentar u kojem se serveri nalaze.
Tražite li dalje?