Återgå via referens

Från Wiki.linux.se
Version från den 24 augusti 2024 kl. 12.07 av Admin (diskussion | bidrag)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Returnera med referens

Att returnera med referens är användbart när du vill använda en funktion för att hitta vilken variabel en referens ska bindas till. Använd inte retur med referens för att öka prestandan. Motorn kommer automatiskt att optimera detta själv. Returnera endast referenser när du har en giltig teknisk anledning att göra det. För att returnera referenser, använd denna syntax:

<?php
class foo {
    public $value = 42;

    public function &getValue() {
        return $this->value;
    }
}

$obj = new foo;
$myValue = &$obj->getValue(); // $myValue är en referens till $obj->value, som är 42.
$obj->value = 2;
echo $myValue;                // skriver ut det nya värdet av $obj->value, dvs 2.
?>

I detta exempel kommer egenskapen för objektet som returneras av funktionen `getValue` att sättas, inte kopian, som den skulle göra utan att använda referenssyntax.

Notera: Till skillnad från parameteröverföring måste du här använda `&` på båda ställena – för att indikera att du vill returnera med referens, inte en kopia, och för att indikera att referensbindning, snarare än vanlig tilldelning, ska göras för `$myValue`.

Notera: Om du försöker returnera en referens från en funktion med syntaxen: `return ($this->value);` så kommer detta inte att fungera eftersom du försöker returnera resultatet av ett uttryck, och inte en variabel, med referens. Du kan bara returnera variabler med referens från en funktion – inget annat.

För att använda den returnerade referensen måste du använda referenstilldelning:

<?php
function &collector() {
  static $collection = array();
  return $collection;
}
$collection = &collector();
$collection[] = 'foo';
?>

För att skicka den returnerade referensen till en annan funktion som förväntar sig en referens kan du använda denna syntax:

<?php
function &collector() {
  static $collection = array();
  return $collection;
}
array_push(collector(), 'foo');
?>

Notera: Observera att `array_push(&collector(), 'foo');` inte kommer att fungera, det resulterar i ett fatalt fel.


Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.references.return.php
PHP
Språkreferens
Språkreferens#Referenser Förklarade


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.