Thread Von CGI.pm Methods erben (25 answers)
Opened by rosti at 2011-04-12 10:35

rosti
 2011-04-12 13:17
#147608 #147608
User since
2011-03-19
3197 Artikel
BenutzerIn
[Homepage]
user image
hi,

mit gehts nur um das Erbe der Methods. Solange ich die Methods nicht überschrieben habe, funktionieren header und param so:

Code (perl): (dl )
1
2
3
4
5
6
package main;
use Data::Dump qw(dump);
my $u = Erbe->new;
print $u->{CGI}->header('text/plain');
print dump($u),"\n";
print join "\n", $u->{CGI}->param;


Quote
Mir ist allerdings auch nicht auf Anhieb klar, warum das Objektattribut CGI anscheinend in einer Methode undefiniert ist und in einer anderen nicht.


header greift direkt auf @_. Daher funktioniert, bzw. reicht ein

Code: (dl )
return $self->{CGI}->SUPER::header(@_);


in meiner Overload-Method header mit dem gleichen Namen wie inherited header. In beiden Fällen

1 header ist von mir überbschrieben, rufe $myObj->header
2 header nicht überschrieben, rufe $myObj->{CGI}->header

werden die Attribute, die header erzeugt, an der richtigen Stelle in meinem Objekt abgelegt.

Method param jedoch ruft intern noch ein paar andere Funktionen. Wenn ich die alle finde, ist das Problem 'Overload' gelöst ;)

--Rolf

View full thread Von CGI.pm Methods erben