Ir pienācis laiks sākt izmantot PHP 8.4

Ingmar Aasoja
RSS: Dalīties:
Šis ieraksts ir novecojis!

PHP versija 8.4 tika izlaista novembra beigās. Zone klienti jau iepriekš varēja testēt jauno PHP paaudzi, sākot no beta līdz release candidate versijām. Tagad galīgā versija ir pieejama mūsu serveros. Šeit ir īss pārskats par jaunumiem un funkcijām, kas pievienotas šajā versijā.

Ir pienācis laiks sākt izmantot PHP 8.4

Objekta inicializēšana bez iekavām

Lai gan šis ir drīzāk kosmētisks atjauninājums kodētājiem, pēc inicializēšanas objekta izmantošana kļūst vienkāršāka. Vairs nav nepieciešams likt jaunā objekta klases nosaukumu iekavās.

PHP 8.3

(new Class())->someFunction();Code language: PHP (php)

PHP 8.4

new Class()->someFunction();Code language: PHP (php)

Īpašību āķi

Šī sintakse ir pazīstama no daudzām programmēšanas valodām un palīdz kodētājiem aprakstīt klases tīrāk, kā arī dažos gadījumos samazina lieku geteru un seteru izmantošanu.

PHP 8.3

class Person 
{
    private string $name;
    
    public function setName(string $name) 
    {
        if (is_numeric($name)) {
            throw new Exception('Invalid name');
        }
        $this->name = $name;
    }

    public function getName(): string
    {
        return $this->name;
    }
}

$person = new Person();
$person->setName('John');
echo $person->getName(); // 'John'
$person->setName('123'); // errorCode language: PHP (php)

PHP 8.4

class Person 
{
    public string $name
    {
        set($name) {
            if (is_numeric($name)) {
                throw new Exception('Invalid name');
            }
        }
    }
}

$person = new Person();
$person->name = 'John';
echo $person->name; // 'John'
$person->name = '123'; // errorCode language: PHP (php)

Asimetriska redzamība

Līdzīgi kā iepriekš, asimetriska redzamība palīdz attīrīt kodu no liekiem pārbaudījumiem un geteriem un seteriem.

PHP 8.3

class Something 
{
    private bool $isModified = false;

    public function modify()
    {
         // ...something
         $this->isModified = true;
    }

    public function getIsModified(): bool
    {
        return $this->isModified;
    }
}

$foo = new Something();
$foo->modify();
var_dump($foo->getIsModified()); // true
$foo->isModified = false; // error;Code language: PHP (php)

PHP 8.4

class Something 
{
    public private(set) bool $isModified = false;

    public function modify()
    {
         // ...something
         $this->isModified = true;
    }
}

$foo = new Something();
$foo->modify();
var_dump($foo->isModified); // true
$foo->isModified = false; // error;Code language: PHP (php)

Nolietots atribūts

Tagad ir iespēja atzīmēt funkciju vai metodi kā nolietotu, lai to varētu noteikt līdzīgi kā PHP iekšējās nolietotās funkcijas, pievienojot Deprecated atribūtu attiecīgajai funkcijai vai metodei.

PHP 8.3

class Person
{
    /**
     * @deprecated 1.9 use getName()
     */
    public function getPersonName()
    {
        return $this->getName();
    }
    
    public function getName()
    {
        return 'Pirgit';
    }
}

(new Person())->getPersonName(); // no warningCode language: PHP (php)

PHP 8.4

class Person
{
    #[\Deprecated(
        message: 'use getName()',
        since: '1.9',
    )]
    public function getPersonName()
    {
        return $this->getName();
    }
    
    public function getName()
    {
        return 'Pirgit';
    }
}

(new Person())->getPersonName(); // Deprecated: Method Person::getPersonName() is deprecated since 1.9, use getName()Code language: PHP (php)

ext-dom izstrāde un HTML5 atbalsts

Jaunais DOM API pievieno atbalstu standarta HTML5 dokumentu parsēšanai. Tāpat ir izlabotas vairākas kļūdas, kas ietekmēja DOM funkcionalitāti. Lai izvairītos no saderības problēmām, jaunais API izmanto Dom nosaukumvietu. Attiecīgos objektus var inicializēt ar klasēm Dom\HTMLDocument un Dom\XMLDocument. Tehniski tas balstās uz jaunu bibliotēku Lexbor iepriekšējās libxml vietā. Ja vēlaties uzzināt vairāk par šīm izmaiņām, ir pieejams detalizētāks bloga ieraksts

BCMath Objektu API

Rakstot kodu, kas daudz strādā ar skaitļiem (piemēram, valūtas konvertācijas lietotnēs), jaunā PHP versija ļauj apstrādāt skaitļus kā objektus.

PHP 8.3

$number1 = '1.5544';
$number2 = '1.00';
$result = bcadd($number1, $number2, 4);
echo $result; // '2.5544'Code language: PHP (php)

PHP 8.4

use BcMath\Number;
$number1 = new Number('1.5544');
$number2 = new Number('1.00');
$result = $number1 + $number2;
echo $result; // '2.5544'
var_dump($number1 < $number2); // falseCode language: PHP (php)

Jaunas array_* funkcijas

Līdz šim masīvu apstrāde bez papildu ietvara vai pakotnes instalēšanas dažos gadījumos prasīja daudz papildu darba. Tagad PHP piedāvā jaunas iebūvētas funkcijas šim nolūkam.

array_find()
array_find_key()
array_any()
un array_all()

Mēs iesakām sākt izmantot PHP 8.4 pēc iespējas ātrāk

Bez iepriekš minētā ir pievienotas arī daudzas citas funkcijas, kuras šeit neesam pieminējuši. Par tām varat lasīt PHP mājaslapā. Kā ierasts, šajā versijā ir arī funkcionalitāte, kas ir nolietota, tāpēc pirms atjaunināšanas pārliecinieties, ka tā netiek izmantota jūsu vietnē.

Aicinām pārbaudīt, vai jūsu vietne jau darbojas ar jauno PHP versiju un, ja iespējams, sākt to izmantot. Ja vēlaties, lai nākotnē mēs atjauninātu jūsu PHP versiju, iesakām iestatīt PHP atjaunināšanas stratēģiju savā vietnē, izmantojot My Zone.

Sakarā ar jauno versiju mēs pārskatām PHP versijas stratēģijās. Drīzumā PHP tiks atjaunināts uz 8.3 versiju tiem, kas izmanto “Zone Recommended“ stratēģiju. “WordPress“ stratēģijas lietotāji turpinās izmantot PHP 8.2, jo 8.3 versijas atbalsts WordPress izstrādātāju ieskatā vēl ir daļēji beta statusā. Par jebkurām izmaiņām atkarībā no stratēģijas klientus iepriekš informēsim pa e-pastu. 

Populāri ieraksti

.NO domain now at Zone – is your business ready for the Norwegian market?

.NO domēns tagad pieejams Zone – vai jūsu uzņēmums ir gatavs Norvēģijas tirgum?

Ants Korsar
Ja jūs plānojat paplašināt savu darbību Norvēģijā vai jau darbojaties tur, tagad ir īstais brīdis nodrošināt sev vietēju un uzticamu tīmekļa...
Zone Webmail 3.0: New features that make email management easier than ever

Zone Webmail 3.0: Jaunas funkcijas, kas padara e-pasta pārvaldību vieglāku nekā jebkad agrāk

Nikita Tikhomirov
Ir klāt uzlabotā Zone Webmail versija, kas piedāvā jaunu un lietotājam draudzīgu pieredzi. Mūsu mērķis ar šo jauno atjauninājumu bija vienkāršs:...
Still the rightful owner of your domain? ICANN’s new rule means it’s time to double-check

Vai joprojām esat sava domēna likumīgais īpašnieks? ICANN jaunais noteikums – laiks pārbaudīt vēlreiz

Jaanus Putting
Sākot ar 2025. gada 28. maiju, stājas spēkā jauna ICANN politika, kas ietekmē visus ģenerisko domēnu, piemēram, .COM, .ORG un .NET, īpašniekus....
Why choose a .EU domain today?

.EU domēns – kāpēc izvēlēties tieši šodien?

Jaanus Putting
Mēs dzīvojam laikā, kad globālās varas dinamika mainās ātrāk nekā jebkad agrāk. Kamēr Eiropa virzās uz spēcīgāku, vienotāku iekšējo tirgu,...