¿Cómo obtener los comentarios de las funciones de la clase PHP?
-
27-10-2019 - |
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 :)
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".