Maybe there's a better tool to tell you what function is defined in what class 
in PHP, but I couldn't find one in the time it would take me to write it, so I 
wrote it. It's not even a screenful. Give it the class definitions, in class 
hierarchy order, on the command line. It will pull out the class name and 
function names, and tell you which function is actually being implemented by 
which class. It doesn't pay any attention to parent::self() calls, so you 
should watch out for them.
-russ

 #!/usr/bin/python

import sys, re

functions = {}
classes = {}
cl = None
for fn in sys.argv[1:]:
    for line in open(fn):
    match = re.match(r'(abstract\s+)?class\s+(.*?)\s+(extends\s+(.*?)\s+)?\{', 
line)
    if match:
        cl = match.group(2)
        supercl = match.group(4)
        classes[cl] = supercl
        if supercl:
        classes[supercl] # superclass should already be exist

    match = re.match(r'\s*(public\s+|static\s+)?function\s+(.*?)\(', line)
    if match:
        # we have a function definition.
        funct = match.group(2)
        functions[funct] = cl

keys = functions.keys()
keys.sort()
for key in keys:
    print key,functions[key]

_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to