Moin,
ich versuche gerade eine Bibliothek aus Funktionen aufzubauen und diese nach Bedarf einzufügen. Es gibt hier im Forum zwar den Hinweis auf __autoload(), der aber Klassen betrifft.
was willst du denn eigentlich bezwecken? Wenn die Funktionen „nach Bedarf“ eingefügt werden sollen, kannst du die Bibliothek doch auch modularisieren und dann nur das entsprechende Modul nach Bedarf einbinden. Oder verstehe ich das Anliegen falsch?
Also habe ich mir gedacht es könnte wie folgt gehen, doch dem ist nicht so, warum?
function masterfunc($funcname,$arg='')
{
if(function_exists($funcname) )
{
$str = $funcname.'('.$arg.');'; // Funktion mit Argumenten zusammensetzen
eval($str); // Funktionsaufruf
Hast du schon [call_user_func](http://de1.php.net/manual/de/function.call-user-func.php) ausprobiert? Das ist deutlich sicherer als evil eval.
> ~~~php
}else{
>
> // hier beginnt die Suche in einem vorgegeben Verzeichnis, in diesem Test nicht wichtig
> }
>
> } // end func.####
>
> // Aufruf Beipiel:
> echo masterfunc('substr',"'abcdefghijklmnop',3,5");
>
>
Ich benutze hier absichtlich eine bestehende PHPFunktion zur Verdeutlichung. Aber mir geht es natürlich vorrangig um eigene. Warum funktioniert mein Beispiel nicht?
Das kommt darauf an, was du erwartest. Dein eval oben führt substr schon aus, speichert das Ergebnis allerdings nirgends oder gibt es zurück. Wenn du $str
mit 'return '
anfangen lässt, hast eval einen Rückgabewert, den du mit einem weiteren return
aus masterfunc zurückgeben kannst.
Viele Grüße,
Robert