Thread OO: Ein paar Fragen zu Super
(4 answers)
Opened by roooot at 2008-06-16 16:07
Hallo.
Ich habe nun mal ein paar Versuche mit Super gestartet. Dazu hier meine "basis" Klasse: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package Gallery; use strict; my $VERSION = '1.0'; use Class::Std::Utils; use Carp; ### s -- vars used in this package my %known_parameters_of; my %session_of; my %outputtype_of; ### e sub new { my ($class, $arg_ref) = @_; my $new_object = bless anon_scalar(), $class; ### extract inits from arguments: my %init = extract_initializers_from($arg_ref); ### insert known parameters $known_parameters_of{ident $new_object} = $init{'parameters'}; $outputtype_of{ident $new_object} = $init{'parameters'}->{'OutputType'}; $session_of{ident $new_object} = $init{'session'}; return $new_object; } und hier meine untergeordnete Klasse: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package Gallery::Category; use strict; my $VERSION = '1.0'; use Class::Std::Utils; use Carp; use base qw( Gallery ); ### s -- vars used in this package my %id_of; ### e sub new { my ($class, $arg_ref) = @_; my $new_object = $class->SUPER::new($arg_ref); my $ident = ident $new_object; ### extract inits from arguments: my %init = extract_initializers_from($arg_ref); ### insert known parameters $id_of{$ident} = $init{'id'}; return $new_object; } Nun habe ich eine Frage: Wie kann ich in Gallery::Category auf zum Beispiel $session_of zugreifen? Ich habe es über Code (perl): (dl
)
my $session = $SUPER::session{ident $self} Der Aufruf geschieht so: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 require Gallery::Category; new Gallery::Category({ 'Gallery' =>{ parameters => _create_parameter_hash($query->url_param), session => $session, }, 'Gallery::Category' => { id => $json->{'ppid'}, }, }); Ein kurzes Beispiel genügt mir. Danke euch! Viele Grüße :)
|