PHP 8.4 on virallisesti julkaistu – on aika ottaa se käyttöön

Ingmar Aasoja
Jaa:

Marraskuun lopussa julkaistiin PHP:n versio 8.4. Zonen asiakkaat ovat voineet testata uuden sukupolven PHP:tä aiempien julkaisujen kanssa: beta-versioista release candidate-versioihin, mutta nyt myös lopullinen versio on palvelimillamme kaikkien saatavilla. Tässä on lyhyt katsaus uusimman version päivityksiin ja ominaisuuksiin.

PHP 8.4 on virallisesti julkaistu – on aika ottaa se käyttöön

Olion alustus ilman sulkeita

Vaikka tämä onkin koodaajille pikemmin kosmeettinen uudistus, olion käyttöönotto alustuksen jälkeen helpottuu. Uuden olion luokan nimeä ei enää tarvitse laittaa sulkeisiin.

PHP 8.3

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

PHP 8.4

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

Property hooks

Monista ohjelmointikielistä tuttua syntaksia, joka auttaa koodaajia kuvailemaan luokkia hieman siistimmin ja joissain tapauksissa vähentämään turhilta tuntuneiden getterien ja setterien käyttöä.

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)

Epäsymmetrinen näkyvyys

Samoin kuin edellä, epäsymmetrinen näkyvyys auttaa puhdistamaan koodin turhista tarkistuksista ja niistä johtuvista gettereistä ja settereistä.

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)

Deprecatedattribuutti

On lisätty mahdollisuus asettaa jokin funktio tai metodi vanhentuneeksi (deprecated) siten, että se tunnistetaan samalla tavalla kuin PHP:n sisäiset vanhentumiset, lisäämällä asianmukaiseen funktioon tai metodiin Deprecated-attribuutti.

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-kehittäminen ja HTML5-tuki

Uusi DOM API lisää standardien mukaisten HTML5-dokumenttien jäsentämisen tuen. Lisäksi se korjaa taustalla useita virheitä, jotka vaikuttivat DOM-toimintoihin. Jotta mikään ei rikkoudu takautuvasti, uusi API käyttää Dom-nimiavaruutta. Vastaavat objektit voidaan alustaa luokilla Dom\HTMLDocument ja Dom\XMLDocument. Teknisestä puolesta voidaan vielä mainita, että se perustuu tähänastisen libxml-kirjaston sijaan uuteen kirjastoon nimeltä Lexbor. Niille, jotka ovat hieman enemmän kiinnostuneita tällaisista muutoksista, on myös yksityiskohtaisempi blogikirjoitus

BCMath Object API

Niille, jotka kirjoittavat koodia, jossa luvuilla on suuri merkitys (esimerkiksi valuutan muuntosovelluksessa), PHP:n uusi versio tarjoaa mahdollisuuden lähestyä lukuja olioina.

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)

Uudet array_*-funktiot

Tähän asti taulukoiden (array) käsittely ilman ohjelmistokehyksen tai lisäpaketin asentamista vaati joissakin tapauksissa paljon ylimääräistä työtä, mutta nyt PHP tarjoaa tätä varten uusia sisäänrakennettuja toimintoja:

array_find(),
array_find_key(),
array_any(),
ja array_all().

Suosittelemme, että otat PHP 8.4:n käyttöön mahdollisimman pian

Edellä mainittujen lisäksi on monia muitakin uusia asioita, joita ei voi mainita tässä ja joista voit lukea lisää PHP:n verkkosivuilta. Kuten yleensä, tässäkin versiossa joitakin toimintoja on poistettu käytöstä, joten ennen version päivittämistä kannattaa varmistaa, että niitä ei ole enää käytössä.

Kannustamme sinua kokeilemaan, toimiiko sivustosi jo uudella PHP-versiolla, ja ottamaan uusi versio käyttöön, jos mahdollista. Jos haluat, että päivitämme PHP-version jatkossa puolestasi, suosittelemme, että asetat My Zone -palvelun kautta verkkosivustollesi PHP-päivitysstrategian.

Uuden version myötä tarkistammekin PHP-versioiden strategioita. Pian PHP päivittyy versioon 8.3 niillä, jotka käyttävät Zone Recommended -strategiaa. WordPress-strategiaa käyttävillä PHP:n versioksi jää vielä 8.2, koska version 8.3 tuki on WordPressin kehittäjien mielestä vielä beta-tilassa. Strategiasta johtuvista versiomuutoksista ilmoitamme asiakkaillemme etukäteen sähköpostitse. 

Suositut postaukset

Miksi valita Zone hostingpalvelun tarjoajaksi?

Zone Blogi
Kun haluat varmistaa nettisivujesi nopeuden, turvallisuuden ja luotettavuuden, Zone on erinomainen kumppani. Nopeasti latautuvat kotisivut eivät ole pelkkä...

Miksi valita Zone hostingpalvelun tarjoajaksi?

Zone Blogi
Kun haluat varmistaa nettisivujesi nopeuden, turvallisuuden ja luotettavuuden, Zone on erinomainen kumppani. Nopeasti latautuvat kotisivut eivät ole pelkkä...

Zone+ sovellukset helpottavat verkkosivun päivittäistä hallintaa

Zone Blogi
Zonen webhotellipalveluiden käyttöönottoon liittyy useita etuja, kuten joukko maksuttomia sovelluksia, jotka helpottavat verkkosivuston hallintaa. Zone+...

Lokalisointi ja laadukas käännös – silta globaalien markkinoiden välillä

Lemme Suve
Digitaalisella aikakaudella, jossa rajat ovat muuttuneet virtuaalisiksi ja yritykset voivat tavoittaa asiakkaita maailmanlaajuisesti, laadukas ja huolellisesti...