Pregunta

Necesito obtener un comentario de la función particular en la clase PHP, por ejemplo:

/* 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 sé, eso podría hacerse fácilmente con ReflectionMethod-> getDoccomment (), pero no funciona para mí porque uso EACCelerator y corta todos los comentarios del código, por lo que GetDocComment siempre devuelve falso.

Yo no quiero recompilar eaccelerator también :)

Necesito una función como esta:

function get_function_comment($class_contents, $function_name) {}

Para que devuelva el comentario de una función, $ class_contents es una variable que almacena el contenido de clase como en el ejemplo anterior.

Traté de hacerlo yo mismo, pero no puedo crear una regexp adecuada.

Por favor, ayúdame :)

¿Fue útil?

Solución

Intente usar comentarios de PHPDOC adecuados:

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

Otros consejos

Oh hombre, casi me siento sucio por escribir este regex, pero esto podría hacer el truco (no lo he probado, así que no tomes mi palabra).

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

En teoría, funciona como:

  • Encuentra o
    • // y todo hasta el final de esa línea o
    • / *, luego todo hasta un */
  • Luego coma todo el espacio en blanco hasta el final de la línea
  • Tome cualquier cantidad de caracteres en blanco o palabras en la siguiente línea hasta que presione "función", algo en blanco, luego todo el nombre de la función que desee.

En la práctica: "Algunas personas, cuando se enfrentan a un problema, piensen" Lo sé, usaré expresiones regulares "ahora tienen dos problemas".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top