Классы и объекты, передача класса по ссылке

tp

Guest
Классы и объекты, передача класса по ссылке

Вот такой код
PHP:
<?php
class c1
{
	var $v1;
	function c1()
	{
		$this->v1=1;
	}
	function updatemy($v)
	{
		$this->v1=$v;
		echo $this->v1;
	}
	function update()
	{
		call_user_func(array('c2','update'),$this);
	}
	function display()
	{
		echo $this->v1;
	}
}

class c2
{
	function update(&$cl1)
	{
		$cl1->updatemy(2);
	}
}

$cl1 = new c1();
$cl1->update();
$cl1->display();
?>
Передаю в c2->update ссылку на экземпляр класса c1, в методе c2->update вызываю метод класса c1, который меняет его св-во v1, сразу после этого вывожу св-во, как и ожидается - "2", потом вывожу его через метод c1->display - "1"

Не могу понять, что неправильно (такое ощущение, что создается новый экземпляр класса c1)
И как решить эту проблему (грубо говоря, необходимо, чтобы и во втором случае было "2")

Заранее благодарен.
 

tp

Guest
Автор оригинала: _RVK_
Где ты передаешь ссылку?
...
function update(&$cl1)
{
$cl1->updatemy(2);
}
...

-~{}~ 28.07.05 16:40:

да, именно в этом и была загвозка, спасибо

я почему-то думал, что если
function f1(&$v)
{}

то f1($v1) и f1(&$v1) - одно и то же ...
 

svetasmirnova

маленький монстрик
PHP 4.x?
call_user_func(array('c2','update'),&$this);

В PHP 5, естесственно, & не нужно
 

tp

Guest
PHP 4.x

А тогда объясните, пожалуйста, какой смысл в "&" в определении ф-ии?

function update(&$cl1)
{
$cl1->updatemy(2);
}
 
Сверху