Definierte Funktionen ermitteln
Tom
- php
0 Edgar Ehritt0 Tom0 Christoph Jeschke0 Tom
0 Cybaer
Hello,
ich suche nach der elegantesten Möglichkeit, definierte Funktionen zu ermitteln.
<?php ### __fuction__.php ###
header('Content-Type: text/plain');
function Eins()
{
return "eins: " . __FUNCTION__ . "\r\n";
}
function Zwei()
{
return "zwei: " . __FUNCTION__ . "\r\nzwei ruft eins: ". eins() ."\r\n";
}
echo eins();
echo zwei();
include ('functions.inc.php'); ## deklariert Funktion Drei()
function Vier()
{
return "vier: " . __FUNCTION__ . "\r\n";
}
$_functions = get_defined_functions();
print_r($_functions['user']);
?>
ergibt die Ausgabe:
eins: Eins
zwei: Zwei
zwei ruft eins: eins: Eins
Array
(
[0] => eins
[1] => zwei
[2] => vier
[3] => drei
)
Es können verständlicherweise nur die Funktionen gefunden werden, die im Script bereits zusammengeführt wurden, also entweder direkt im Script deklariert wurden oder eben included oder required wurden.
Wie könnte ich nun in einer größeren Applikation alle Funktionen ermitteln, ohne sie einzubinden, was bei einem include geschehen würde?
Es gibt ja leider kein undeclare() für Funktionen. Geladen ist geladen. Und bei einer größeren Applikation würde der Speicher für alle nicht ausreichen.
Die Output-Buffer-Funktionen helfen mir auch nicht weiter.
Bleiben mir da nur noch reguläre Ausdrücke und ein Parsen der ganzen Sammlung, oder hat jemand eine bessere Idee?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
oder hat jemand eine bessere Idee?
na klar. ;)
Sieh Dir Tokenizer an. Im Gegensatz zu einem gebastelten, lexikalischen Parser, nutzt Du dabei den Interpreter selbst.
Gruß aus Berlin!
eddi
Hello Eddi,
oder hat jemand eine bessere Idee?
na klar. ;)
Sieh Dir Tokenizer an. Im Gegensatz zu einem gebastelten, lexikalischen Parser, nutzt Du dabei den Interpreter selbst.
hab ich gar nicht dran gedacht. Probier ich gleich mal aus.
Vielleicht löst der auch das nächste Problem, nämlich, welche Funktion in welcher benutzt wird.
Eigentlich ist das Ziel, festzustellen, ob eine bestimmte Funktion P innerhalb einer anderen X benutzt wird. Dann muss X auf die Liste :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Guten Tag,
Tokenizer, mein Stichwort!
hab ich gar nicht dran gedacht. Probier ich gleich mal aus.
Vielleicht löst der auch das nächste Problem, nämlich, welche Funktion in welcher benutzt wird.
Eigentlich ist das Ziel, festzustellen, ob eine bestimmte Funktion P innerhalb einer anderen X benutzt wird. Dann muss X auf die Liste :-)
Schau dir mal meinen GozintograPHP an. Es sollte nur kleiner Modifikationen bedürfen, um statt includes und requires Funktionen verfolgen zu können.
Gruß
Christoph Jeschke
Hello,
Schau dir mal meinen GozintograPHP an. Es sollte nur kleiner Modifikationen bedürfen, um statt includes und requires Funktionen verfolgen zu können.
includes und requires werde ich bestimmt auch noch behandeln müssen. Soweit bin ich aber noch nicht.
Wenn man bedenkt, wieviel Aufwand man treiben muss, um es für den User/Administrator eines Systems später bequem zu machen...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Bleiben mir da nur noch reguläre Ausdrücke und ein Parsen der ganzen Sammlung, oder hat jemand eine bessere Idee?
Ich habe es für mich mit konsequenter Nutzung von phpDocumentor-Kommentaren gelöst (@uses). Muß natürlich trotzdem dann alle Libs durchgehen ...
Gruß, Cybaer
Hello,
Bleiben mir da nur noch reguläre Ausdrücke und ein Parsen der ganzen Sammlung, oder hat jemand eine bessere Idee?
Ich habe es für mich mit konsequenter Nutzung von phpDocumentor-Kommentaren gelöst (@uses). Muß natürlich trotzdem dann alle Libs durchgehen ...
Wo gibt's dazu was zu lesen?
Das soll allerdings später zur Laufzeit geschehen. Nicht unbedingt bei jedem Request, aber immer bevor ein berechtigter Administrator an den Zugriffsrechten auf Programmteile etwas ändert.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Ich habe es für mich mit konsequenter Nutzung von phpDocumentor-Kommentaren gelöst (@uses). Muß natürlich trotzdem dann alle Libs durchgehen ...
Wo gibt's dazu was zu lesen?
Zu phpDocumentor? Im Netz. ;-)
Zu meinem Tool? Ist nur für den internen Gebrauch, um bei Scripts genau die Funktionen einzzubinden, die wirklich gebraucht werden - und nicht die kompletten Libs ...
Das soll allerdings später zur Laufzeit geschehen. Nicht unbedingt bei jedem Request, aber immer bevor ein berechtigter Administrator an den Zugriffsrechten auf Programmteile etwas ändert.
OK, meine Zielvorgabe war eine andere und ist dazu wohl nicht so gut zu verwenden ...
Gruß, Cybaer