NovaMonoFix
Errores PHP
X
Usuario
Password
0 FPS

PHP : Objeto devildrey33_PintarCodigo

25 de Octubre del 2011 por Josep Antoni Bover, 29 visitas, 0 comentarios, 0 votos
Categorías : PHP, HTML, Programación.
La web está en segundo plano, animación en pausa.
Cargando animación...
PHP : Objeto devildrey33_PintarCodigo

Este objeto es en el que he basado los 6 tutoriales anteriores sobre Colorear código con PHP.

Uno de los problemas de parsear el código y mostrarlo, es que requiere que el servidor PHP realice ciertos cálculos, y por ello puede resultar pesado para ciertos sitios web.

Si por ejemplo tenemos un sitio con 10000 visitas diarias y tenemos que hacer el parsing de un código 10000 veces al día, estoy seguro que en más de un momento si el servidor pudiera hablar nos diría muchas palabras mal sonantes.

Por ello este objeto tiene incorporado un sistema que guarda el parsing realizado en un archivo del servidor para ahorrarle trabajo, lo que se traduce en una respuesta más rápida por parte de él al mostrar las páginas web a los usuarios.

Por si solo este objeto me ofrece la posibilidad de pintar códigos tal y como los veo en los programas que utilizo para desarrollarlos, y además sin necesidad de tener que re-escribirlos en el documento HTML final.

Si por ejemplo tengo el archivo main.c, y quiero mostrar una parte de él en un documento HTML, utilizando una simple línea de código este objeto realiza el parsing y lo muestra en el documento HTML final. Anteriormente he comentado que estos parsings se guardan en el servidor PHP una vez realizados para agilizar el proceso, pero esto no es inconveniente si al cabo de una semana decido modificar el archivo main.c, ya que este mismo objeto comprobara que la fecha de modificación del archivo main.c sea anterior a la del archivo del parsing. En caso contrario este objeto volverá a parsear la porción de código indicada y guardara nuevamente los cambios.

Además también crea un marco que nos facilita la visualización del código y que viene con las líneas numeradas, por si luego hay que explicar de esas líneas específicamente que sea mucho más fácil de hacer.

En esencia para cada tipo de código existen 3 funciones :

La primera función recibe una cadena de caracteres y realiza el parsing al lenguaje especificado.

La segunda función básicamente es como la primera, con la diferencia de que devuelve el código para mostrar el marco además del código parseado y pintado a su lenguaje correspondiente.

La tercera función está preparada para archivos, y también devuelve el marco además del código pintado. Esta función además puede ser utilizada para mostrar solo un fragmento de código, o todo el archivo completo.

Veamos la lista de funciones públicas :

devildrey33_PintarCodigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// NOTA : basicamente imprime el array de palabras para las funciones basadas en PHP, JavaScript y C/Cpp
public function ActivarDebug();
// Función para escribir la cabecera para los CSS necesarios para pintar las palabras de varios colores
public function CSS();
// Funciones para HTML
public function PintarArchivoHTML($IDMarco, $Titulo, $Archivo, $ID = "");
public function PintarTextoHTML($IDMarco, $Titulo, $Texto);
public function PintarHTML($Texto);
// Funciones para XML
public function PintarArchivoXML($IDMarco, $Titulo, $Archivo, $ID = "");
public function PintarTextoXML($IDMarco, $Titulo, $Texto);
public function PintarXML($Texto);
// Funciones para PHP
public function PintarArchivoPHP($IDMarco, $Titulo, $Archivo, $ID = "");
public function PintarTextoPHP($IDMarco, $Titulo, $Texto);
public function PintarPHP($Texto);
// Funciones para JavaScript
public function PintarArchivoJavaScript($IDMarco, $Titulo, $Archivo, $ID = "");
public function PintarTextoJavaScript($IDMarco, $Titulo, $Texto);
public function PintarJavaScript($Texto);
// Funciones para C/C++
public function PintarArchivoC($IDMarco, $Titulo, $Archivo, $ID = "");
public function PintarTextoC($IDMarco, $Titulo, $Texto);
public function PintarC($Texto);
// Funciones para CSS
public function PintarArchivoCSS($IDMarco, $Titulo, $Archivo, $ID = "");
public function PintarTextoCSS($IDMarco, $Titulo, $Texto);
public function PintarEstilosCSS($Texto);
public function PintarEstiloCSS($Texto);

Exceptuando las funciones de CSS todas las demás funciones siguen el esquema anterior de tres funciones. El problema con el CSS es que podemos necesitar pintar un estilo con su nombre de clase/id o simplemente pintar solo sus propiedades. Tal y como han definido las reglas en Dreamweaver es necesario separar estos dos conceptos ya que nos podemos encontrar una etiqueta script, que requiera el nombre de clase/id del estilo, o bien nos podemos encontrar en cualquier etiqueta el atributo style que nunca incluye el nombre de la clase/id.

Los parámetros para las funciones son exactamente iguales independientemente del lenguaje a parsear :

$IDMarco :
Este parámetro se utiliza para asignar una id en el marco de código. Esta id es accesible desde HTML.

$Titulo :
Este parámetro es una cadena de texto con el titulo que se mostrara en el marco. Se pueden añadir etiquetas con alguna url.

$Archivo :
Este parámetro es la ruta del archivo de donde queremos extraer el código a parsear.

$ID :
Este parámetro es la ID de la porción de código que queremos parsear del archivo. Si no se especifica ninguna ID se parseara el archivo completo.

$Texto :
Este parámetro es una cadena de caracteres con el código a parsear.

Para las funciones PintarArchivo si queremos solo pintar una porción del código hay que especificar la ID a pintar en la función. Dentro del archivo que queremos pintar deberán haber unos comentarios que designaran la porción a pintar, por ejemplo :

Ejemplo 1 para la ID C/C++
1
2
3
// -[INICIO devildrey33.MiID]-
int MiFuncionEjemplo(void) { return 0: };
// -[FIN devildrey33.MiID]-
Ejemplo 2 para la ID CSS
1
2
3
/* -[INICIO devildrey33.MiID]- */
.Estilo { margin:0px; };
/* -[FIN devildrey33.MiID]- */
Ejemplo 3 para la ID HTML
1
2
3
<!--[INICIO devildrey33.MiID]-->
<Etiqueta>Datos</Etiqueta>
<!--[FIN devildrey33.MiID]-->

Como podéis observar en el ejemplo en la línea 1 tenemos el comentario "// -[INICIO devildrey33.MiID]-" exceptuando la parte en negrita ese texto debe estar siempre presente al empezar la porción de código. La parte en negrita es variable y es donde pondremos el nombre que designaremos a esa porción de código. Ese nombre será el que pondremos luego en el parámetro $ID para especificar una porción de código a parsear.

Cada lenguaje tiene sus tipos de comentarios, por ejemplo HTML y XML tiene <!--, CSS solo sirven los comentarios /*, y en C/C++, PHP y JavaScript se puede utilizar tanto // como /*

Lo importante es que el tercer carácter del comentario empiece por "-" seguido por "[INICIO devildrey33.????]-". Así que si queremos hacer un comentario para HTML/XML deberá tener este estilo : "<!--[INICIO devildrey33.MiID]-->", y si lo queremos para CSS deberá ser de este estilo "/* -[INICIO devildrey33.MiID]- */"

Si os fijáis en cualquier tutorial de C/C++ de devildrey33 os encontrareis comentarios de ese estilo en la mayoría de archivos de código que vienen para descargar, ya que estos son utilizados directamente para ser mostrados luego en la web.

NOTA para finalizar de marcar una porción de código debéis poner el mismo estilo de comentario re-emplazando la palabra INICIO por FIN.

Dicho esto solo queda enseñaros el código un documento PHP de ejemplo que mostrara toda la clase devildrey33_PintarCodigo :

Documento PHP que utiliza devildrey33_PintarCodigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include "devildrey33_PintarCodigo.php";
$PintarCodigo = new devildrey33_PintarCodigo;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ejemplo de devildrey33_PintarCodigo</title>
<?php $PintarCodigo->PintarCodigo->CSS(); ?>
</head>
<body>
<p>Ejemplo de devildrey33_PintarCodigo :</p>
<a href="/Blog/ColorearCodigoPHP_devildrey33_PintarCodigo">Volver a devildrey33</a>.
<?php $PintarCodigo->PintarCodigo->PintarArchivoPHP("IDEjemplo", "devildrey33_PintarCodigo.php", "devildrey33_PintarCodigo.php"); ?>
<a href="/Blog/ColorearCodigoPHP_devildrey33_PintarCodigo">Volver a devildrey33</a>.
</body>
</html>

En esencia es muy simple, creamos una instancia de devildrey33_PintarCodigo, y llamamos a la función que más nos interese en cualquier momento.

Si descargáis el ejemplo fijaros que dentro hay una carpeta PintarCodigo, en ella es donde se guardaran los archivos parseados. Podéis borrar los archivos que hay dentro, pero ojo no me borréis la carpeta, o el código PHP os puede dar más de un warning / error.

Y esto es todo! espero que esta clase os saque de algún apuro y que como mínimo os ahorre tiempo.

Este código ha quedado obsoleto, por favor echa un vistazo a la versión 2 : Resaltar sintaxis de un código fuente.