PHP Academy · Oppitunti

Nullsafe-operaattori ja union-tyypit

Käyttäkää ?->-operaattoria nullable-olioiden turvalliseen ketjutukseen ja määrittäkää union-tyyppivihjeitä.

Oppitunti 2/413 vaihetta

Nullsafe-operaattori ja union-tyypit on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Nullsafe-operaattori

PHP 8.0 toi käyttöön ?->-operaattorin. Jos vasemmanpuoleinen arvo on null, koko ketju oikaistaan ja tulokseksi palautetaan null virheen heittämisen sijaan.

Ratkaistava ongelma

Ilman nullsafe-operaattoria nullable-olioiden ketjuttaminen vaatii paljon toistuvia null-tarkistuksia.

<?php
// Old way:
$city = null;
if ($user !== null && $user->getAddress() !== null) {
    $city = $user->getAddress()->getCity();
}

// PHP 8 nullsafe:
$city = $user?->getAddress()?->getCity();

Nullsafe-operaattori metodikutsuissa

Jokainen ketjun ?->-operaattori tarkistetaan erikseen. Ensimmäinen null oikaisee ketjun loppuosan.

<?php
$name = $order?->getCustomer()?->getName() ?? "Guest";

Nullsafe-operaattori ominaisuuksien kanssa

Se toimii myös ominaisuuksien käytössä.

<?php
$zip = $user?->address?->zip;

Nullsafe ei ohita sivuvaikutuksia

Jos nullsafe-ketju oikaistaan, ketjun myöhempiä metodikutsuja ei suoriteta — sivuvaikutuksia ei synny.

Union-tyypit

PHP 8.0:n union-tyyppien avulla voi ilmoittaa, että parametri, ominaisuus tai palautusarvo hyväksyy yhden useista tyypeistä.

<?php
function formatId(int|string $id): string {
    return (string) $id;
}

Esimerkkejä union-tyypeistä

Yleisiä käytännön union-tyyppejä:

<?php
function process(int|float $amount): float {
    return (float) $amount;
}

function findUser(int|string $idOrEmail): ?User {
    // search by ID or email
}

Nullable-tyypit

?Type on lyhyt muoto kirjoitukselle Type|null — arvo voi olla kyseistä tyyppiä tai null.

<?php
function greet(?string $name): string {
    return "Hello, ".($name ?? "stranger");
}

null union-tyypeissä

Voitte sisällyttää null-arvon unioni-tyyppiin suoraan: int|string|null.

Intersection-tyypit (PHP 8.1)

PHP 8.1 lisäsi intersection-tyypit (A&B) — arvon on täytettävä kaikki tyypit samanaikaisesti. Niistä on hyötyä tyyppiturvallisessa riippuvuuksien injektoinnissa.

<?php
function process(Iterator&Countable $collection): void {
    // $collection must be both Iterator AND Countable
}

Tyypin pakotus vs strict_types

Ilman declare(strict_types=1)-määritystä PHP saattaa muuntaa arvoja, esimerkiksi merkkijonon "42" luvuksi 42. Tiukassa tilassa hyväksytään vain täsmälleen vastaavat tyypit.

Yhteenveto

Nullsafe-operaattori (?->) poistaa toistuvien null-tarkistusten tarpeen ketjuissa. Union-tyypit (int|string) mahdollistavat joustavat mutta tyyppiturvalliset funktioallekirjoitukset.

Pikatarkistus

Mitä nullsafe-operaattori palauttaa, jos jokin ketjun metodi palauttaa null-arvon?

Aloita maksutta

Opi PHP tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
49
Oppitunnit
195

Usein kysytyt kysymykset

Onko oppitunti ”Nullsafe-operaattori ja union-tyypit” ilmainen?

Kyllä – oppitunnin ”Nullsafe-operaattori ja union-tyypit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Nullsafe-operaattori ja union-tyypit”?

Käyttäkää ?->-operaattoria nullable-olioiden turvalliseen ketjutukseen ja määrittäkää union-tyyppivihjeitä. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Nullsafe-operaattori ja union-tyypit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?

Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Match-lauseke ja nimetyt argumentit
  2. Nullsafe-operaattori ja union-tyypit
  3. Luettelot (enumit)
  4. Fiberit: yhteistoiminnallinen rinnakkaisuus
← Takaisin: PHP Academy