Thread @INC Erweitern in httpd.conf (3 answers)
Opened by rosti at 2015-01-16 17:53

rosti
 2015-01-17 09:06
#179256 #179256
User since
2011-03-19
3198 Artikel
BenutzerIn
[Homepage]
user image
Noch eine Frage zum Stil in Verbindung mit mod_perl:

Meine Subklassen erben von meinem PerlResponseHandler MyModPerl::FWNG; Es gibt mehrere Subklassen, in denen ich das mit use base qw(MyModPerl::FWNG); deklariere.

Möglich wäre eine Vorwärtsdeklaration, weil ja alle Klassen von UNIVERSAL erben:

Code (perl): (dl )
1
2
3
4
5
6
  package MyModPerl::FWNG;
  # ...
  require "$class.pm";  # Je nach Request-URL die Subklasse
  unshift @UNIVERSAL::ISA, __PACKAGE__;

  # in der Subklasse kein use base ... notwendig



Oder so?:
Code (perl): (dl )
1
2
    no strict 'refs';
    unshift @{$class."::ISA"}, __PACKAGE__;



Macht das jemand oder vergessen wir das lieber?



PS: Ich schreibe gerade mein Framework für mod_perl ins Reine. Bei Interesse werde ich alle Sourcen public machen.

PSPS: Ich werde KEINE der beiden "Vorwärtsdeklarationen" anwenden und schön ordentlich ein use base qw() einbauen :)
Denn genau davon profitiert mein FWNG: Es ist, verglichen mit anderen Frameworks extrem übersichtlich. Keine schmutzigen Hacks ;)


Nochn Edit: Verlockend sind die Zeilen

Code (perl): (dl )
1
2
3
4
5
        # im PerlResponseHandler oder in der main
        # wen die Subklasse für die Response feststeht:
        no strict 'refs';
        @{$class."::ISA"} = (__PACKAGE__);
        use strict;


hinsichtlich Kompatibilität meines Perl-Frameworks. Das könnte entweder in der main notiert sein oder im PerlResponseHandler. Eine Migration vom reinen CGI-Betrieb zu mod_perl oder umgekehrt würde dann nur noch den Austausch der Basisklasse erfordern, alles Andere, wie Konfigurationsdateien und die Dateien für die Subklassen bleiben unverändert. Die Basisklasse ist entweder die package main oder die dem PerlResponseHandler entsprechende Package, zu ändern ist lediglich die Serverkonfiguration und das ist auch nicht weiter kompliziert.





Als einen schmutzigen Hack würde ich obenstehende Zeilen nicht bezeichnen, ein use base macht auch nichts anderes, nur halt andersherum.
Last edited: 2015-01-18 09:20:40 +0100 (CET)

View full thread @INC Erweitern in httpd.conf