[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 было извлечено&hellip;
URL: http://mail.pm.org/pipermail/moscow-pm/attachments/20080521/a8ff80e9/attachment.html 


Подробная информация о списке рассылки Moscow-pm