Objektübergabe immer als Referenz?

Chosi

Mitglied
Hallo allerseits,

ist es richtig, dass Objekte im Falle einer Parameterübergabe an eine Funktion immer als Referenz übergeben werden?

Da ich dies gerade benötige, stellte ich ein paar Tests an und kam zur Erkenntnis, dass ein Objekt immer als Referenz übergeben wird. (?)

Denn folgender Code erzeugt eine Ausgabe von "4":
Code:
class refTest
{
  public $value = 0;
}

function inc($argObj)
{
  $argObj->value++;
}

$ref = new refTest;
$ref->value = 3;
inc($ref);
echo($ref->value);

Was nun, falls ich ein Objekt mal nicht als Referenz übergeben möchte? Dann muss ich mich selbst um eine Kopie kümmern?
 
Für PHP5 ist dies korrekt, ja. Bei PHP4 wurden Objekte noch als Kopie übergeben, bei PHP5 hat sich dies geändert.

Wenn man nur eine Kopie übergeben möchte, muss man in PHP5 das Objekt erst klonen: inc(clone $ref);.
 
kann man in PHP 4 auch Objekte per Referenz übergeben? Einfach ein Ampersand (&) davor oder?

Und das ist doch schneller, da keine Kopie erstelle wird, oder?
 

Neue Beiträge

Zurück