PHP 8.4 PHP 8.4 je najnovija verzija popularnog programskog jezika koji se široko koristi za izradu dinamičkih web stranica i web aplikacija. U usporedbi s prethodnim verzijama, PHP 8.4 uvodi niz novosti i promjena koje znatno poboljšavaju učinkovitost, sigurnost i udobnost programiranja. Novosti i promjene u PHP 8.4: Bolja učinkovitost: PHP 8.4 uključuje optimizacije koje skraćuju vrijeme izvođenja skripti, što je posebno korisno za velike web aplikacije i online trgovine. Učinkovitost...
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 PHP - (Hypertext Preprocessor) je popularni skriptni jezik koji se široko koristi u izradi dinamičkih web stranica i web aplikacija. PHP je open-source jezik, što znači da je dostupan besplatno i korisnici ga mogu modificirati. Jedna od glavnih primjena PHP-a je generiranje dinamičkih sadržaja na web stranicama. Zahvaljujući PHP-u moguće je stvarati stranice koje reagiraju na podatke unesene od strane korisnika, što je ključno u slučaju aplikacija kao što...
Brže performanse PHP-a 8.4 – što to znači za vašu stranicu?
PHP 8.4 donosi niz optimizacija Optimizacija je proces usavršavanja nečega s ciljem postizanja najboljih mogućih rezultata. U kontekstu informatike i tehnologije, optimizacija se odnosi na različite aktivnosti usmjerene na poboljšanje učinkovitosti, brzine, efikasnosti i kvalitete rada računalnih sustava, softvera, web stranica i drugih digitalnih resursa. Zašto je optimizacija važna? Odgovor je jednostavan. Optimizacija omogućava bolje iskorištavanje resursa, što se prevodi na brže funkcioniranje aplikacija, manju potrošnju energije i bolje iskustvo korisnika. Na primjer, optimizacija web... Customer experience (CX), poznato kao iskustvo kupca, je zbroj svih iskustava i dojmova koje kupac stječe tijekom interakcije s vašim brendom. To uključuje svaku točku kontakta, od prvog susreta s oglasom, preko procesa kupovine, pa sve do poslijeprodajne usluge i podrške. To je sveobuhvatan pogled na odnos između kupca i tvrtke, koji nadilazi sam proizvod ili uslugu. Zašto je Customer experience tako važan? Značenje Customer experiencea proizlazi iz njegovog...
- 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 debugiranjeIspravljanje grešaka u kodu (debugging) je proces otkrivanja, identifikacije i uklanjanja bug – grešaka u računalnim programima, aplikacijama ili drugom softveru. Glavni cilj ispravljanja grešaka je dijagnosticiranje i popravak problema koji mogu uzrokovati nepravilno funkcioniranje programa ili aplikacije...Što je debugging? 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 aplikacijaAplikacija je računalni ili mobilni program koji izvršava određene zadatke na uređaju korisnika. Aplikacije mogu biti namijenjene različitim svrhama, od upravljanja dokumentima, preko igara, do upravljanja transakcijama u online trgovini. Razumijevanje što je aplikacija i koje su njene primjene ključno je i za korisnike i za vlasnike poduzeća. Koje su vrste aplikacija? Aplikacije se dijele na nekoliko kategorija: desktop (instalirane na računalu), mobilne (za pametne telefone i tablete)...Što je Aplikacija? mora odlučiti hoće li nastaviti vezu na temelju izvorišne i odredišne IP adreseIP adresom nazivamo adresu internetskog protokola, koja je skup brojeva dodijeljenih uređaju. Te adrese služe za identifikaciju uređaja i komunikaciju s drugim osobama na Internetu...Što je IP adresa? 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 FTPFTP (File Transfer Protocol) je komunikacijski protokol koji se koristi za prijenos datoteka između računala na internetskoj mreži. To je jedan od najstarijih i najčešće korištenih alata za dijeljenje i preuzimanje datoteka na internetske servere.FTP je idealno rješenje ako trebate jednostavan i učinkovit način za prijenos datoteka između računala. Posebno je koristan u kontekstu upravljanja datotekama na hosting serverima, poput hostinga ili WordPress hostinga...Što je FTP?, već i za druge protokole poput SFTPSFTP, odnosno Secure File Transfer Protocol, je protokol za sigurno prenošenje datoteka između klijenta i poslužitelja. On je proširenje protokola SSH (Secure Shell), koje osigurava šifriranu i sigurnu vezu za prijenos podataka...Što je SFTP?, SCP, IMAP, POP3 i SMTPSMTP (Simple Mail Transfer Protocol) je standardni protokol koji se koristi za slanje e-mail poruka između poštanskih servera u računalnim mrežama. To je komunikacijski protokol koji koriste klijenti elektroničke pošte (kao što su Microsoft Outlook, Mozilla Thunderbird ili poštanske aplikacije za mobilne uređaje) za slanje e-mail poruka poslužitelju odlazne pošte, koji zatim prosljeđuje poruku ciljnom serveru...Što je 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.