Objekt och referenser

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

Objekt och referenser

En av de viktigaste punkterna i PHP OOP som ofta nämns är att "objekt skickas som referenser som standard". Detta är inte helt sant. Denna sektion klargör den allmänna uppfattningen med hjälp av några exempel.

En PHP-referens är en alias, vilket gör att två olika variabler kan skriva till samma värde. I PHP innehåller en objektvariabel inte själva objektet som värde. Den innehåller endast en objektidentifierare som gör det möjligt för objektaccessorer att hitta det faktiska objektet. När ett objekt skickas som argument, returneras eller tilldelas en annan variabel, är de olika variablerna inte alias: de innehåller en kopia av identifieraren, som pekar på samma objekt.

Exempel #1 Referenser och objekt

<?php
class A {
    public $foo = 1;
}  

$a = new A;
$b = $a;     // $a och $b är kopior av samma identifierare
             // ($a) = ($b) = <id>
$b->foo = 2;
echo $a->foo."\n";


$c = new A;
$d = &$c;    // $c och $d är referenser
             // ($c,$d) = <id>

$d->foo = 2;
echo $c->foo."\n";


$e = new A;

function foo($obj) {
    // ($obj) = ($e) = <id>
    $obj->foo = 2;
}

foo($e);
echo $e->foo."\n";

?>

Exemplet ovan kommer att ge följande utdata:

2
2
2


Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.oop5.references.php
PHP
Språkreferens
Språkreferens#Klasser_och_Objekt


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/