2010-10-27 7 views
2

Я видел this вопрос, но он не полностью отвечает на вопрос, который у меня есть.Передайте объект в другой класс по ссылке

Если я это сделать:

$obj1 = new ObjectOne(); 

, а затем это:

$obj2 = new ObjectTwo($obj1); 
$obj2->someFunction(); 

Где someFunction() изменяет атрибуты объекта, переданного в него, оба $obj1 и $obj2->passedInObject как в действительности будет обновляться?

ответ

4

Я пробовал следующий код, и он работает как ожидалось. Значение var в MyObject увеличивается в исходном объекте.

<?php 
class MyObject { 
    public $var; 
} 

class MyObjectTwo { 
    public $objVar; 
    function __construct($aObj1) { 
     $this->objVar = $aObj1; 
    } 

    public function someFunction() { 
     $this->objVar->var++; 
    } 
} 

$obj1 = new MyObject(); 
$obj1->var = 5; // Originally set to 5 

$obj2 = new MyObjectTwo($obj1); 
$obj2->someFunction(); 
echo $obj1->var; // Prints 6 
Смежные вопросы