[Moscow.pm] Как народ борится с глобальным деструктором
Dmitry Nizovtsev
funt4k на gmail.com
Ср Май 21 03:47:24 PDT 2008
То что глобальный деструктор моральный урод это понятно(хотя его тоже можно
понять ) но бороться то как то с ним нужно :)
Выглядит это примерно так:
my $query=XXX::Upload->new(
Storage => new
XXX::Storage($cfg->get_val('storage_directory'),
);
package XXX::Upload;
sub new{
my $class=shift;
my $self={
Storage => undef,
@_,
};
bless $self, $class;
return $self;
}
sub DESTROY{
my $self=shift;
#На самом деле в конце скрипта $self->{Storage} уже undef
if($self->{Storage}){
$self->{Storage}->clean();
}
}
21 мая 2008 г. 13:35 пользователь Ivan B. Serezhkin <ivan на serezhkin.com>
написал:
> Dmitry Nizovtsev wrote:
> > Здраствуйте
> > Проблема в следущем есть обьект A который содержит ссылку на обьект B.
> > В деструкторе обьекта A используется ссылка на обьект B - всё хорошо
> > работает пока дело не доходит до глобального десктруктора. Глобальный
> > деструктор уничожает обьект B раньше обьекта A и естественно обьект A
> > не может выполнить всех необхдимых действий в своём деструкторе.
> > Что народ может посоветовать в таком случае?
> Можно кусочек кода в студию ?
> Глобальный деструктор - моральный урод, так ему и передайте.
> Ибо хорошо воспитанный глобальный деструктор не будет трогать объект, на
> который у кого то есть ссылка.
>
> --
> Ivan B. Serezhkin
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> http://mail.pm.org/mailman/listinfo/moscow-pm
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: http://mail.pm.org/pipermail/moscow-pm/attachments/20080521/a8ff80e9/attachment.html
Подробная информация о списке рассылки Moscow-pm