hotti: Funktions Bibliothek aufbauen und bei Bedarf einzeln abrufen

Beitrag lesen

Hi,

eine Funktionsbibliothek [..] das wäre auch der Vorteil die Funktionen in einer Klasse zu bündeln.

Nochmal die Aufgabe:
Führe einfach nur eine Funktion aus, so als wäre sie eine Built-in-Funktion.

Klar, ich könnte eine Lib zusammenbauen, wo die alle drin sind. Denke jedoch ans Kompilieren: Da werden stets ALLE Funktionen kompiliert, womöglich brauche ich aber nur eine von denen. Also keine Lib?

Lösung: Die Funktion wird aus dem FS oder aus einer DB oder von sonstwo nachgeladen. In Perl steht der Name der Funktion in $AUTOLOAD. Hier nun das Perl-Beispiel für die Klasse main, die main gibt es in Perl immer (Beispiel ohne Fehlerbehandlung):

  
use strict;  
use warnings;  
  
foo(1,2,3,4); # einfach mal ne Funktion aufrufen  
  
sub AUTOLOAD{  
    # main::foo steht in $AUTOLOAD, wir brauchen nur foo  
    my $meth = [split "::", our $AUTOLOAD];  
    require $meth->[1].'.pm';         # eine foo.pm liegt im @INC Pfad  
    my $code = main->can($meth->[1]); # can() liefert die Code-Referenz  
    &$code(@_); # Code ausführen  
}  
  

Jetzt schauen wir mal in die Datei foo.pm da steht drin:

  
use strict;  
use warnings;  
  
sub foo{  
    print "@_";  
}  
  
1;  

Und hier ist die Ausgabe: 1 2 3 4

Mit einer zweckmäßigen Fehlerbehandlung versehen, wird das zu einer feinen Sache. Geht auch mit PHP zu machen.

Horst