Hallo.
Ich habe nun mal ein paar Versuche mit Super gestartet.
Dazu hier meine "basis" Klasse:
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;
my %known_parameters_of;
my %session_of;
my %outputtype_of;
sub new {
my ($class, $arg_ref) = @_;
my $new_object = bless anon_scalar(), $class;
my %init = extract_initializers_from($arg_ref);
$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:
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 );
my %id_of;
sub new {
my ($class, $arg_ref) = @_;
my $new_object = $class->SUPER::new($arg_ref);
my $ident = ident $new_object;
my %init = extract_initializers_from($arg_ref);
$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
my $session = $SUPER::session{ident $self}
versucht, wobei $self die Klasse ist: ($self) = @_
Der Aufruf geschieht so:
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 :)