Thread Problem mit Klassen (6 answers)
Opened by Gast at 2008-07-29 01:43

Gast Gast
 2008-08-01 03:06
#112969 #112969
Bei Dir gehts, aber Du hast auch etwas geflunkert, denn in Zeile 032 greifst Du direkt auf den Klassen-Hash ActionsHash und so wird die Vererbung nicht gefordert. (Übrigens:
Code: (dl )
%ActionsHash
spielt keine Rolle und ist nur beispielhaft angelegt.)
Mit dieser Zeile 032 funktioniert es und auch noch wenn ich das Beispiel auf drei Dateien verteile!:
Code (perl): (dl )
 032:        my $func = $Self->{'ActionHash'}->{ $action }->{'postaction'} ;

Ich habe den modifizierten originalen _handle_event funktionierend in das Beispiel eingebaut.
Nur gelingt es mir nach wie vor nicht das Ergebnis in das Gesamtprogramm zu übertragen. Die Fehlermeldung lautet weiterhin wie oben. :-(
Vererbung funktioniert grundsätzlich, weil ich new() der Superklasse benutze und von dort _initialize() von "module_sources" aufrufe.

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
sub _handle_event
        {
        my $Self           = $_[0];
        #my $actionarr  = $_[1];
        #----
        my $dphase       = 0; #$actionarr->[0];
        my $module       = ''; #$actionarr->[1];
        my $action         = 'edit'; #$actionarr->[2] ;
        #----
        my $phase         = $dphase ? 'doaction' : 'postaction';
        my $result;
        my $error;
        my $actionshash = $Self->{'ActionHash'};
        #-------
        if( exists $actionshash->{ $action }->{ $phase } 
                        && defined $actionshash->{ $action }->{ $phase }  
                                && ref( $actionshash->{ $action }->{ $phase }  ) eq 'CODE')
                {
                my $func = $actionshash->{ $action }->{$phase} ;
                #-------
                if(!$dphase)
                        {
                        ($result, $error) = $func->( @_ ) ;
                        }
                else { }
                }
        else
                {
                die "Kein ausfuehrbarer Eintrag gefunden!;";
                }
        return ($result, $error);
        }

View full thread Problem mit Klassen