Que tal... apenas que estaba trabajando con un
framework que estoy desarrollando me di cuenta que hay momentos que uno no recuerda ni sus propias funciones, incluso... el orden y uso de cada parámetro, cosas simples... pues
también, alguna ves vi una
chuleta de
CSS rondando por el foro, o algo así... y se me ocurrió hacer lo mismo, pero en una función para que pueda ser usada en cualquier archivo con funciones estándar... (parece que también funciona con clases, pero no esta implementado)
muestra el nombre del archivo a reportar, con cada una de sus funciones excepto las que empiecen con Mayúsculas y guion_bajo; también muestra los parámetros manualmente tal y como están escritos... puede ser de gran utilidad a veces, de veras!
igualmente, los estilos son configurables con CSS, el código es modificable 100% al gusto... no se, una buena idea es: imprimir el formato como
PDF :D
--
Codigo fuente:
Código PHP:
/**
* (cadena[, devolver?[, ocultar?]])
*
* Crea una "chuleta" de reporte acerca de las funciones de un script.
*/
function report($text, $ret = true, $hid = true)
{
$out = array();
//preg_match_all('/function\s+([a-z0-9_]+)\s*\(([^\{]*)\)(?=\s*[^\)])/is', $text, $test);
preg_match_all('/function\s+((?:&?\s*)?[a-z0-9_]+)\s*\(([^\{]*)\)/is', $text, $test);
ksort($test[1]);
foreach ($test[1] as $key => $val)
{ // evitamos..
if (preg_match('/^([A-Z]|_)/', $val) && $hid)
{
continue;
}
// simple...
$args = ents($test[2][$key]);
$args = preg_replace('/([\'\"])[^=\\1]*\\1/', '<span style="color:green">\\0</span>', $args); // "cadena's"
$args = preg_replace('/(true|false|null)/i', '<span style="color:purple;font-weight:bold">\\0</span>',$args); // bool's
$args = preg_replace('/\b[0-9]+\b/', '<span style="color:black;font-weight:bold">\\0</span>',$args); // numeros
$args = preg_replace('/\$[a-z0-9_]+/i', '<span style="color:darkblue">\\0</span>',$args); // $variables..
$args = preg_replace('/[a-z0-9_]+\(.*?\)/i', '<span style="color:teal">\\0</span>',$args); // funciones
$args = trim($args)? $args: $args.'<span style="color:black;font-weight:bold;font-style:italic">void</span>';
$args = preg_replace('/\s+=\s+/', ' = ', $args);
$args = preg_replace('/\s*,\s+/', ', ', $args);
$out[] = "\t<span style=\"color:orange\">[<span style=\"color:red;font-weight:bold\">$val</span> : $args]</span>";
}
$out = join("\n", $out);
if ( ! $ret)
{
echo $ret;
}
return $out;
}
Edito: actualizado y corregido