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

clms
 2011-04-12 14:27
#147622 #147622
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
Ich kann mich meinen Vorrednern nur anschließen.

Dein Mischmasch aus Vererbung und Delegation erscheint mir als sicherer Weg ins Verderben. Und ich habe auch nicht ganz kapiert, warum Du das unbedingt machen willst

Mein Vorschlag: Entscheide Dich für einen sauberen Weg.

Entweder
(A) Vererbung
$self ist dann ein CGI-Objekt und enthält alle CGI-Interna dort, wo es CGI erwartet. Wenn Du Befürchtungen hast, dass Felder, die Du in Deiner erweiterten Klasse anlegen willst, mit Feldern kollidieren, speichere Deine Erweiterungen nicht direkt unter $self sondern $self->{MyPackage}.

oder

(B) Delegation
Spendier Deiner Klasse ein CGI-Objekt unter $self->{CGI}, aber lasse sie nicht von CGI erben. Wenn Du Wert darauf legst, dass alle von CGI zur Verfügung gestellten Methoden auch mit Deiner neuen Klasse funktionieren (sofern Du sie nicht überschreibst), kannst Du das recht einfach mit einer AUTOLOAD Funktion erreichen, die die Methodenaufrufe an $self->{CGI} delegiert.

View full thread Von CGI.pm Methods erben