phpbar.de logo

Mailinglisten-Archive

[php] liste aller PHP funktionen

[php] liste aller PHP funktionen

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Fri, 03 Sep 1999 12:27:33 +0200


Marc Logemann wrote:
> Keine Ahnung, muss ich ersma checken was das sein soll :))

Ein Perl-Script, das Du in Deinem PHP3-Sourcetree aussetzen kannst und
das dann alle Funktionsnamen aus dem C-Source pflückt.

#! /usr/bin/perl --

# Benutze das Modul File::Find, um den Dateibaum abzusuchen.
# Siehe auch "perldoc File::Find"
use File::Find;

#
# Diese Funktion wird mit einem Dateinamen aufgerufen und durchsucht
# die angegebene C-Datei nach Funktionsnamen.
#
sub scanforfunction {
  my($file) = shift;
 
  # Einlesen der gesamten Datei $file in eine Variable $line.
  $x = $/;
  open(IN, "<$file") or warn "Cannot open $file ";
  undef $/;
  $line = <IN>;
  close IN;
  $/ = $x;

  # Durchsuche $line nach Text der Art
  #    function entry pcre_functions[] = { };
  # und merke Dir den Modulnamen ("pcre") und den Teil zwischen
  # den geschweiften Klammern als $1 und $2.
  $line =~ m!function_entry\s+(\w+)_functions\[\]\s*=\s*\{(.*?)\};!s;

  # Nix in der Datei zu finden -> weg hier.
  if (!$1) {
    return;
  }

  # $1 ist der Modulname ("pcre")
  # _(at)_lines sind die Zeilen zwischen den geschweiften Klammern ($2).
  $mod = $1;
  _(at)_lines = split "\n", $2;

  # Diese Zeilen _(at)_lines gehen wir jetzt durch. Sie haben entweder die Form
  # {"funktionsname", cfunktionsname, irgendwas }  oder die Form
  # PHP_FE(funktionsname, irgendwas)

  foreach $i (_(at)_lines) {
    # Suche nach {"funktionsname", cfunctionsname,
    # und merke Dir funktionsname ($1) und cfunctionsname ($2).
    # Drucke den Treffer aus.
    $i =~ /\{\s*"(\w+)"\s*,\s*(\w+)\s*,/  &&
      printf "%-18s %-18s %-18s %-18s\n",
        $mod, $1, $file, $2;

    # Suche nach PHP_FE(funktionsname,
    # und merke Dir funktionsname ($1).
    # Drucke den Treffer aus.
    $i =~ /PHP_FE\(\s*(\w+)\s*,/ &&
      printf "%-18s %-18s %-18s %-18s\n",
        $mod, $1, $file, "php3_$1";
  }
}

# Durchsuche Dateien mit der Endung .c
# Rufe für jede dieser Dateien scanforfunction von oben auf.
sub wanted {
  if (/\.c$/) {
    &scanforfunction($_);
  }
}

# Drucke Überschrift
printf "%-18s %-18s %-18s %-18s\n",
  "\_(at)_MODULE", "PHP Function", "FILE", "C Function";

# Durchsuche das aktuelle Verzeichnis gemäß der Funktion wanted von oben.
finddepth(\&wanted, ".");


Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)


php::bar PHP Wiki   -   Listenarchive