Как распознать ссылку на класс

Статус
В этой теме нельзя размещать новые ответы.

camel

Новичок
Как распознать ссылку на класс

Суть проста есть два класса, и хочеться узнать являються ли они ссылками на один и тот же экземпляр класса или это два разных экземпляра класса?
Можно конечно попытаться изменить какой нить атрибут и посмотреть изменился ли у второго класса этот же атрибут, но способ какой то муторный, может кто знает более простой способ? Заранее спасибо
 

Vinny

Guest
Можно еще в классе вести переменную hashCode. В конструкторе класса делать так:
PHP:
$this->hashCode = uniqid('');
а при необходимости проверки просто сравнивать эти переменные у классов.
 

camel

Новичок
ты хочешь сказать, что это будут один и тот же екземпляр класса по твоему методу?
PHP:
$a = new myclass();
$b = $a
вызовов конструктора только один в первой строке, во второй происхидит побитовое копирование.... не понимаю что даст твой hashid... Если не отлавливать вызов побитового копирования в пХп если у тебя есть желание то удачи....
 

LEglantier

Guest
ИМХО проще всего сравнить ссылки на эеземпляры (&$obj1 и &$obj2) по идее, они дожны быть равны, если $obj1 и $obj2 указывают на один и тот же экземпляр.
 

Vinny

Guest
2 camel:
Согласен. Это будут разные экземпляры с одинаковыми hashCode.
 

.des.

Поставил пиво кому надо ;-)
Нет больше способа! Только генерация случайного id

2L'Eglantier
PHP:
class A
{
   var $a;
}
$a=&new A;
$a1=&new A;
$acopy=$a;
$aref=& $a;

echo ($a==$a1)?"yes\n":"no\n";
echo ($a==$acopy)?"yes\n":"no\n";
echo ($a==$aref)?"yes\n":"no\n";
Output

yes
yes
yes
 

[VS]

Guest
Автор оригинала: L'Eglantier
ИМХО проще всего сравнить ссылки на эеземпляры (&$obj1 и &$obj2) по идее, они дожны быть равны, если $obj1 и $obj2 указывают на один и тот же экземпляр.
Имхо перед тем как давать советы нужно быть уверенным в их верности =)
 

LEglantier

Guest
Да уж. Вякнул, не проверив:-(
Mea culpa
Извиняюсь, впредь буду проверять.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху