✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Nullable-palautustyyppien käyttäminen PHP:ssä

24

"Yksi PHP:n mukavimmista ominaisuuksista on tyyppivihjeet erityisesti niille, jotka tulevat olio-ohjelmointitaustasta.

PHP käsikirjasta :

Tyyppimääritykset sallivat funktioiden vaatia, että parametrit ovat tietyn tyyppisiä kutsun aikana. Jos annettu arvo on väärää tyyppiä, syntyy virhe: PHP 5:ssä tämä on korjattavissa oleva kohtalokas virhe, kun taas PHP 7 heittää TypeError – poikkeuksen.

Tämä on tärkeä syy, koska se antaa ihmisille, jotka aikovat käyttää koodiasi – erityisesti niille, jotka kirjoittavat koodia koodiasi vastaan ​​– minkä tyyppisiä parametreja tietty konstruktori tai funktio hyväksyy.

Mutta siinä on muutakin, koska tyyppivihjeitä voidaan soveltaa myös tietotyypeihin, jotka funktio voi palauttaa.

Nollattavat palautustyypit

Ensinnäkin, oletetaan, että sinulla on funktio, jonka on tarkoitus palauttaa jonkinlainen objekti. Oletetaan tässä esimerkissä, että meillä on a Postja viestiä edustaa malli. Luonnollisesti malli on post-tyyppinen, joten luokan allekirjoitus näyttää suunnilleen tältä :

<?php

namespace Acme;

class Post {
  // Attributes, Constructor, and Functions here.
}

Oletetaan nyt, että sinulla on toissijainen luokka, joka palauttaa viestin esiintymän. Kun funktiolle käytetään tyyppivihjettä, allekirjoitus näyttäisi tältä :

<?php

namespace Acme;

class PostManager {

  private $post;

  // Constructor and other Functions here.

  public function getPost(): Post
  {
    return $this->post;
  }

}

Asia on siinä, että menetelmä voi palauttaa viestin tai se voi palata null, jos mallia ei ole koskaan instantoitu, siirretty tiettyyn luokkaan tai sitä ei yksinkertaisesti ole jostain syystä olemassa, meidän on otettava se huomioon.

Esimerkki: Jos olet työskennellyt WordPressissä perusteellisesti jonkin aikaa, tiedät, että funktiot voivat palauttaa useita asioita (kuten esiintymän WP_Errortai taulukon). Mutta puhtaimmassa oliokeskeisessä tapauksessa, josta puhun edellä, tarkastelemme funktiota, joka voi palauttaa nulltai saattaa palauttaa esiintymän Post.

Ja osoittaaksesi tämän, voit määrittää menetelmän seuraavasti:

<?php

namespace Acme;

class PostManager {

  private $post;

  // Constructor and other Functions here.

  public function getPost(): ?Post
  {
    if ($this->post === null) {
      return null;
    }

    return $this->post;
  }
}

Lyhyesti sanottuna yksinkertaisen kysymysmerkin lisääminen objektityypin eteen sanoo "Tämä menetelmä voi palauttaa nollan tai esiintymän Post."

Tai tarkemmin PHP-oppaasta:

Parametrien ja palautusarvojen tyyppimääritykset voidaan nyt merkitä tyhjäksi lisäämällä tyypin nimen eteen kysymysmerkki. Tämä tarkoittaa, että määritetyn tyypin lisäksi NULLse voidaan välittää argumenttina tai palauttaa arvona.

Joten, joo, tämä on hieman pitkä viesti selventääksesi suoraviivaista koneptia. Mutta konkreettisten esimerkkien käyttäminen on mielestäni usein hyödyllisempää kuin pelkkä abstrakti puhuminen.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja