Voglio creare una funzione che riceve un singolo argomento che contiene il percorso di un file PHP e quindi analizza il file data e restituisce qualcosa di simile:Classi l'analisi, Funzioni e argomenti in PHP
class NameOfTheClass
function Method1($arg1, $arg2, $arg2)
private function Method2($arg1, $arg2, $arg2)
public function Method2($arg1, $arg2, $arg2)
abstract class AnotherClass
function Method1($arg1, $arg2, $arg2)
private function Method2($arg1, $arg2, $arg2)
public function Method2($arg1, $arg2, $arg2)
function SomeFunction($arg1, $arg2, $arg3)
Questo la funzione dovrebbe restituire tutte le classi, i metodi e le funzioni esistenti nel file specificato con tutti gli identificatori definiti (astratti, pubblici, privati, protetti, statici, estesi, interfacce, ...).
Il mio primo pensiero era usare le espressioni regolari per farlo, ma questi si comportano piuttosto male con i commenti, ovvero:/* questa funzione restituisce (max (salario)) */e diventa piuttosto complessa se voglio supportare correttamente gli ambiti .
Un'altra possibile soluzione era quella di utilizzare le seguenti funzioni PHP built-in:
get_declared_classes
get_declared_interfaces
get_defined_functions
get_class_methods
Tuttavia queste funzioni non mi permettono di vedere il file in cui sono definite le classi/metodi/funzioni, quindi non è molto utile.
Credo che l'estensione Tokenizer sia la soluzione per il mio problema, tuttavia non ho mai usato questa estensione prima.
Questo praticamente copre tutte le mie esigenze, ancora una domanda difficile: per quanto riguarda le funzioni (non i metodi)? –
È possibile utilizzare get_defined_functions() per ottenere tutte le funzioni definite dall'utente, oltre alla classe ReflectionFunction (http://www.php.net/manual/en/class.reflectionfunction.php) per analizzarle. –