Domanda

Devo ottenere un commento della funzione particolare nella classe PHP, ad esempio:

/* Some commets for a class */
class Foo extends Bar {
    function __construct() {}

    // a single line comment to the function foo()
    function foo() {}

    /* a multi-line comment
    to the function bar() */
    public static function bar() {}

}

Sì, lo so, potrebbe essere facilmente fatto con ReflectionMethod-> getDoccomment (), ma non funziona per me perché uso Eaccuterator e taglia tutti i commenti dal codice, in modo che getDoccomment restituisca sempre falso.

Non voglio ricompilare anche Eaccielerator :)

Ho bisogno di una funzione come questa:

function get_function_comment($class_contents, $function_name) {}

In modo che restituirò il commento di una funzione, $ class_contents è una variabile che memorizza il contenuto di classe come nell'esempio sopra.

Ho provato a farlo da solo ma non posso creare un regexp adeguato ..

Mi aiuti per favore :)

È stato utile?

Soluzione

Prova a utilizzare i commenti PHPDOC corretti:

/**
 * Something explaining this
 *
 * @return string
 */
function foo(){  }

Altri suggerimenti

Oh amico, mi sento quasi sporco per aver scritto questo regex, ma questo potrebbe fare il trucco (non l'ho testato, quindi non credermi).

preg_match('#(//.*$|/\*.*\*/)\s*$[\s\w]*function\s+$function_name\b#Usmi', $class_contents, $result);

In teoria, funziona come:

  • Trova entrambi:
    • // e tutto fino alla fine di quella linea o
    • / *, allora tutto fino a un */
  • Quindi mangia tutto lo spazio bianco fino alla fine della linea
  • Prendi qualsiasi quantità di caratteri di spazi bianchi o di parole nella riga successiva fino a quando non si preme "funzione", un po 'di spazio bianco, quindi l'intero nome della funzione che desideri.

In pratica: "Alcune persone, di fronte a un problema, pensano" Lo so, userò espressioni regolari. "Ora hanno due problemi".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top