PHP 5 übergabe von Klasse-Objekt als parameter, ist es immer ein Zeiger oder eine Kopie oder ein Klon?

Ich habe eine Frage über die übergabe-Objekt als parameter. Wenn wir an eine variable, wird eine Kopie erstellt, jedoch sieht das Objekt ist immer ein Verweis Zeiger, ist das richtig? Ich habe getestet mit den folgenden Beispiel-code:

class Base 
{
    private $var;
    function set ($var)
    {
        $this->var = $var;
    }

    function show ()
    {
        echo $this->var, '<br>';
    }
}

class Car
{
    private $obj;
    function __construct($obj)
    {
        $this->obj = $obj;
    }

    function set ($var)
    {
        $this->obj->set($var);
    }

    function show()
    {
        $this->obj->show();
    }
}

class Bus
{
    private $obj;
    function __construct($obj)
    {
        $this->obj = $obj;
    }

    function set ($var)
    {
        $this->obj->set($var);
    }

    function show()
    {
        $this->obj->show();
    }
}

Und durch das ausführen von

$base = new Base();
$base->set('one');
$base->show();          //one

$bus = new Bus($base);
$bus->show();           //one

$car = new Car($base);
$car->set('two');
$car->show();           //two

$base->show();          //two

$bus->show();           //two

Dem display das Ergebnis ist:

one
one
two
two
two

So ändern Sie die Basisklasse die variable auch noch irgendwo, es war, als parameter übergeben, in einer Funktion oder einer anderen Klasse hat Auswirkungen auf alle von Ihnen, so bedeutet das, dass es immer nach einem gleichen Objekt wie ein Zeiger?

Danke.

  • php.net/manual/en/language.oop5.references.php
  • Objekte werden übergeben von Referenzen standardmäßig. Aber actully, php-Referenz ist nicht wirklich Referenz und jedes mal, wenn Sie ein Objekt übergeben php-proccesor neues Objekt anlegen, die identisch sind und wenn Sie sich ändern, es wird sich ändern die anderen.
InformationsquelleAutor user702300 | 2013-12-29
Schreibe einen Kommentar