Suur muutus – veebiserveritesse tuleb PHP 8.0

PHP versioonid muutuvad tihti ja tavaliselt me ei märkagi seda peale selle, et veebimajutuse iseteenindusse sisse logides antakse teada vananenud versioonist ning palutakse uuendada. Elu läheb samamoodi edasi juba uuema versiooniga. Kuid seekord on üleminek suurem ja olulisem. Selgitame lähemalt.

PHP 8.0 on suur versiooniuuendus, mis toob endaga kaasa palju muudatusi andmetüübi süsteemis, süntaksis, veakäsitluses, stringides, objekt-orienteeritud programmeerimises ja paljus muus. Siin on ülevaade kõigist olulistest muutustest, millega eksperdid ja võiksid kursis olla.

Aritmeetiliste ja bitipõhiste operaatorite rangem tüübikontroll

Enne PHP 8-t oli võimalik rakendada bitipõhiseid operaatoreid objektide, ressursside ja massiivide peal. Alates PHP 8-st pole see aga enam võimalik ning tulemuseks on veateade TypeError. See tähendab tavaliselt seda, et väärtus pole oodatud tüüpi.

Vaikimisi veateabe tase muutub

Alates PHP 8-st on veateabe tase E_ALL, mis tähendab seda, et paljud sellised veateated võivad tulla nähtavale, mida varasemalt ignoreeriti.

Ümberklassifitseeritud hoiatused ja teatised saavad vigadeks

Paljud pisemad vead, mis varem käivitasid ainult hoiatusi ja teatisi, on nüüd teisendatud vigadeks. Muudeti järgmisi hoiatusi:

Atribuudid PHP 8-s

PHP 8 lubab meil kasutada atribuute, mis võimaldavad deklareerida meta-andmeid funktsioonidele, klassidele, muutujatele ja parameetritele.

Konstruktori isendiväljad

Uuenenud PHP 8-ga on kasutusel uus süntaks isendiväljade deklareerimiseks otse klassi konstruktorist.

Näide:

Mis on Null-safe operator (Null-ohutu operaator)?

Null-safe operaator tagab ohutuse meetodite või muutujate aheldamisel, kui tagastatav väärtus või muutuja väärtus võib olla null.

Näide:

?-> null-ohutu operator katkestab ülejäänud avaldise, kui see kohtab nullväärtust ning tagastab kohe nulli ilma viga põhjustamata.

Union types (ehk Union-tüübid)

Union-tüüp on kogumik kahest või enamast andmetüübist, mida on võimalik muutuja või funktsiooni sisend- ja väljundparameetri väärtusena kasutada.

Näide:

 Näites võib muutuja $number väärtuseks olla int (täisarv) ja float (ujukoma-arv) korraga.

Named arguments (Nimelised argumendid või parameetrid)

Nimelised argumendid või parameetrid võimaldavad anda funktsioonidele sisendparameetreid, kasutades selleks muutujate enda nimesid. Nii ei sõltu funktsiooni sisendparameetrid parameetrite järjekorrast.

Näide:

Match avaldis on Switchi järglane

Match avaldist võib kutsuda Switchi järglaseks. Match avaldis tagastab väärtuse ning ei vaja selleks eraldi break käsku.

Näide:

Non-capturing catches (ehk mittepüütavad erindid)

Varasemalt pidi erindi püüdmiseks hoidma seda muutujas, olenemata sellest, kas sa seda muutujat kasutatakse või mitte. Mittepüütava erindi korral võid aga jätta need muutujad välja.

Kui varem pidi erindit püüdma nii:

siis alates PHP 8-st on võimalik seda teha nii:

Täiesti uus str_contains() funktsioon

Kui varasemalt pidi kasutama funktsiooni str_pos(), et teada saada, kas string sisaldab teist stringi, siis alates PHP 8-st on saadaval uus funktsioon nimega str_contains().

Kui varem tehti nii:

Siis alates PHP 8-st on võimalik seda teha natuke lihtsamalt uue funktsiooniga:

Mainimist vajavad ka veel uued funktsioonid str_starts_with() ja str_ends_with()

Need kaks stringist teise stringi otsimise funktsiooni lihtsustavad otsimist järgmiselt:

Näide:

Mittesoovitatuks kuulutatu on nüüd eemaldatud

Oluline on teada, et kõik, mis kuulutati PHP 7.x arenduse ajal mittesoovitatuks, eemaldati nüüd PHP 8-s:

Jaga