✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Använda Nullable Return Types i PHP

22

"En av de trevligaste funktionerna som PHP erbjuder är typtips specifikt för dem som kommer från en objektorienterad programmeringsbakgrund.

Från PHP-manualen :

Typdeklarationer tillåter funktioner att kräva att parametrar är av en viss typ vid anropstid. Om det angivna värdet är av felaktig typ, genereras ett fel: i PHP 5 kommer detta att vara ett återställbart fatalt fel, medan PHP 7 kommer att ge ett TypeError- undantag.

Anledningen till att detta är viktigt är för att det ger människor som ska använda din kod – speciellt de som ska skriva kod mot din kod – vilka typer av parametrar en given konstruktör eller funktion kommer att acceptera.

Men det finns mer än så eftersom typtips också är tillämpliga på vilken typ av data en funktion kan returnera.

Nullbara returtyper

Till att börja med, låt oss säga att du har en funktion som är tänkt att returnera ett objekt av något slag. I det här exemplet, låt oss säga att vi har a Postoch inlägget representeras av en modell. Naturligtvis kommer modellen att vara av typen post så klasssignaturen kommer att se ut ungefär så här :

<?php

namespace Acme;

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

Låt oss nu säga att du har en sekundär klass som kommer att returnera en instans av inlägget. När du använder en typtips för funktionen skulle signaturen se ut ungefär så här:

<?php

namespace Acme;

class PostManager {

  private $post;

  // Constructor and other Functions here.

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

}

Saken är den att metoden kan returnera ett inlägg eller nullom modellen aldrig instansierades, skickades till en given klass eller helt enkelt inte existerar av någon anledning, då måste vi ta hänsyn till det.

Exempel: Om du har arbetat på djupet i WordPress under en längre tid, vet du att funktioner kan returnera flera saker (som en instans av WP_Erroreller en array). Men i det renaste objektorienterade fallet som jag pratar om ovan, tittar vi på en funktion som kan returnera nulleller kan returnera en instans av Post.

Och för att indikera detta kan du ställa in metoden så här:

<?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;
  }
}

Kort sagt, att lägga till det enkla frågetecknet före objekttypen säger "Den här metoden kan returnera null eller en instans av Post."

Eller, mer specifikt från PHP-manualen:

Typdeklarationer för parametrar och returvärden kan nu markeras som nullbara genom att prefixet typnamnet med ett frågetecken. Detta betyder att såväl som den angivna typen NULLkan skickas som ett argument, eller returneras som ett värde, respektive.

Så, ja, det här är ett lite långt inlägg för att förklara ett rakt begrepp. Men jag tycker att det ofta är mer användbart att använda konkreta exempel än att bara prata om det abstrakt.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer