Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: EFEX en 26 Junio 2011, 18:13 pm



Título: Estructura de datos
Publicado por: EFEX en 26 Junio 2011, 18:13 pm
Vengo armando un sitio, tiene un toque social, esta armado en php y el còdigo se me, digamos, alargo bastante con 32 archivos .php. Mi idea es simplificar en lo que pueda al codigo fuente y como a pasado tiempo desde la ultima ves que lo edite, puede que me olvide de algunas funciones o clases, entonces me preguntaba si existe un programa, que digamos... tome los archivos php y arme un tipo de estructura de datos con las clases y funciones que excribì.


Saludos


Título: Re: Estructura de datos
Publicado por: EFEX en 27 Junio 2011, 14:25 pm
De verdad no existe un programa que tome los archivos .php y me arme un estilo de diagrama, estructura de datos, lo que sea con las clases, funciones, llamadas, etc ?
Asi que improvisè  ;D, de momento armè este, es medio brusco pero funciona para mi codigo, algo me sirve.

Código
  1. <?php
  2. class EDD {
  3. private $dir = array('archivo.php', 'archivo2.php');
  4. private $contenido;
  5. function __construct() {
  6. $cant_archivos = count($this->dir);
  7. for ($c = 0; $c < $cant_archivos; $c++) {
  8. if (file_exists($this->dir[$c])) {
  9. echo "Se encontro el archivo: ".$this->dir[$c]."<br>";
  10. $this->leer($this->dir[$c]);
  11. }else{
  12. echo "No existe el archivo: ".$this->dir[$c]."<br>";
  13. }
  14. }
  15. }
  16. function leer($archivo) {
  17. echo "Leyendo el archivo...<br>";
  18. $filesize = filesize($archivo);
  19. $this->contenido = htmlspecialchars(file_get_contents($archivo, $filesize), ENT_QUOTES);
  20. $this->objetos();
  21. }
  22. function objetos() {
  23. if ($this->contenido) {
  24. $longitud = strlen($this->contenido);
  25. echo "\$this->contenido obtenido, tamaño ".$longitud."<br>";
  26. $sincomentarios = explode("&lt;?php", $this->contenido);
  27. $max = count($sincomentarios);
  28. for ($i=1; $i<$max; $i++) {
  29. $sincomentarios[$i] = strstr($sincomentarios[$i], "?&gt;", true);
  30. }
  31. echo "Quitando comentarios &lt;?php ... ?&gt;<br>";
  32.  
  33. $clases = array();
  34. $classes_encontradas = substr_count ( implode( $sincomentarios ), 'class ');
  35. //echo $classes_encontradas;
  36. for ($i = 1; $i <= $classes_encontradas; $i++) {
  37. $clases = explode("class ",implode( $sincomentarios ));
  38. $clasess[$i] = trim(strstr($clases[$i], "{", true));
  39.  
  40. echo "Encontrado Class <b>".$clasess[$i]."</b><br>";
  41.  
  42. $funciones_encontradas = substr_count ( $clases[$i], 'function ');
  43.  
  44. for ($a = 1; $a <= $funciones_encontradas; $a++) {
  45. //echo $a;
  46. $funciones = explode("function ",$clases[$i] );
  47. $nombree = trim(strstr($funciones[$a], "{", true));
  48. echo "|___Function <b>".$nombree."</b><br>";
  49. }
  50. }
  51. //echo "<pre>";
  52. //print_r($funciones);
  53. //echo "</pre>";
  54. }else{
  55. echo "No se pudo obtener el \$contenido";
  56. }
  57. }
  58. }
  59.  
  60. $showtime = new EDD();
  61.  
  62. ?>
  63.  

(http://img802.imageshack.us/img802/3184/unled2xk.jpg)