symbolicky odkaz na balik

Pavel Kolesnikov k na les.cz
Sobota Červenec 25 21:22:19 MEST 1998


Dobry den,

pri vytvareni jedne podtridy jsem zjistil, ze potrebuju, 
aby promenna nadtridy, ktere je vytvorena jako instance
tridy IO::Socket::INET (ta promenna, ne nadtrida), byla
misto toho instanci z ni odvozene tridy HTTP::Daemon.

Jako nejuspornejsi moznost mi prislo pred vytvorenim 
one instance (deje se tak v metode jmenem Bind) napsat neco
jako 

    $pkg = $self->{'socket_pkg'} || 'IO::Socket::INET';	(*) 

a pak puvodni

    $self->socket = IO::Socket::INET->new(...)

zmenit na obecnejsi

    $self->socket = $pkg->new(...);			(**)

s tim, ze v me odvozene tride predefinuju metodu Bind necim
jako

    $self->{'socket_pkg'} = 'HTTP::Daemon';
    $self->SUPER::Bind();

Prekvapilo me, ze to opravdu funguje, a ani perl -w ani
use strict proti tomu nic nenamitaji.

Chtel bych se ale zeptat, nakolik se tohle da povazovat za
slusny/vhodny/celkove pozitivni postup (a jestli to neni moc
velka prasarna na to, abych si moh dovolit autora puvodni tridy
otravovat s tim, ze by mel do ni pridat radky (*) a (**) :)

  Pavel




Další informace o konferenci Perl