2010-04-25 5 views
6

¿Hay alguna herramienta que pueda mostrar los nombres de las clases utilizadas por un archivo PHP?Encontrar dependencias PHP

Por ejemplo, si me encontré en este archivo:

<? 
class Test { 
    public function __construct(Obj1 $x) { 
    $y = new Obj2(); 
    $str = "Obj3"; 
    $z = new $str(); 
    } 
} 
?> 

informaría "Obj1" y "Obj2". Si fuera realmente inteligente también podría informar "Obj3", pero eso no es esencial.

Estoy intentando empaquetar algunos códigos, y quiero ayuda para asegurarme de no perderme ninguna dependencia.

Hay algo llamado PHP_Depend, que puede graficar el número de dependencias, pero no puede informar cuáles son.

ACTUALIZACIÓN: No encontré una solución real, pero me di cuenta de algo lo suficientemente cerca para mis propósitos. Puede tokenizar un archivo y buscar todos los tokens T_STRING. Esto le dará todos los nombres de clase mencionados en el archivo. También le dará otras cosas, como nombres de funciones y constantes. Pero si sus nombres de clase son fáciles de distinguir (por ejemplo, tienen límites iniciales), entonces esto no debería ser un problema.

$contents = file_get_contents($path); 
$tokens = token_get_all($contents); 
foreach ($tokens as $token) { 
    if (is_array($token) && $token[0] === T_STRING) { 
    echo $token[1]."\n"; 
    } 
} 
+0

Hmm, los nombres de las * clases * no son realmente relevantes para averiguar las dependencias de archivos, ¿o sí? Porque hay varias preguntas de SO sobre cómo encontrar dependencias de archivos. –

+1

No creo que pueda encontrar las dependencias de archivos sin ejecutar realmente el código. Pero creo que un analizador podría, al menos, extraer los nombres de las clases, lo cual debería ser suficiente para mis propósitos. –

+0

Con respecto, esta es una pregunta anterior, ¿alguna vez encontraste algo mejor que el tokenizador? Estoy buscando algo para hacer exactamente lo que describes. –

Respuesta

1

Hay PHPXref, que es un generador de documentos de referencias cruzadas PHP.

Cuestiones relacionadas