<?xml version="1.0"?>
     <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
     <channel>
      <link>http://www.bitacora.gesbit.com/</link>
      <title>Bitácora de Gesbit - Entrada "La clase G de Gesbit" de la bitácora</title>
      <generator>Gesbit</generator>
      <description>Bitácora del gestor de bitácoras Gesbit</description>
      <atom:link href="http://www.bitacora.gesbit.com/rss/" rel="self"
       type="application/rss+xml" />
    
      <item>
       <link>http://www.bitacora.gesbit.com/la-clase-g-de-gesbit/</link>
       <guid>http://www.bitacora.gesbit.com/la-clase-g-de-gesbit/</guid>
       <pubDate>Fri, 14 Dec 2007 09:58:47 +0100</pubDate>
       <title><![CDATA[ La clase G de Gesbit ]]></title>
       <description><![CDATA[<p>
Hoy, en un alarde y atrevimiento sin precedentes en mi triste y abotargada memoria, he introducido en Gesbit una clase de nombre "G". La clase "G". De fuerza G, comando G, "G" de Gesbit... ¿Cómo ha podido ocurrírseme tamaño atrevimiento? ¿Será acaso fruto de estar leyendo <a href="http://es.wikipedia.org/wiki/El_gen_ego%C3%ADsta" title="Reseña sobre el libro El gen egoísta en la Wikipedia">El gen egoísta</a>? ¿Acaso me he vuelto loco?
</p>
<p>
Bien. Todo tiene una explicación. Lo que no sé es si esta explicación es tan razonable como me parece en principio, aunque, si digo la verdad, aún hay cosas que no tengo muy claras acerca de la clase "G".
</p>

<p>
Hablemos de la clase "G". La clase "G" es una clase estática, que, contiene todos las funciones que antes se implementaban en el script "gb-themesaid.php", básicamente. Por cierto que he aprovechado para renombrar ciertas funciones (ahora ya métodos de la clase "G") y de dar una limpia en general a estas.
</p>
<p>
Pero, a lo que íbamos. ¿Para qué demonios he movido las funciones del script "gb-themesaid.php" al interior de la clase "G"? Como su nombre indica, el script susomentado pretendía dar "soporte" a los temas de Gesbit. Sus funciones, principalmente, eran utilizadas por los temas de Gesbit.
</p>
<p>
Pero, he dicho principalmente, y ahí está el lío. ¿Qué hace un plugin, por ejemplo, utilizando una función del script "gb-themesaid.php"? ¿Y qué cuando se usan funciones de dicho script en el panel de administración de Gesbit? ¿No quedamos en que eran funciones que daban soporte a temas?
</p>
<p>
No quedaba muy claro, esto. Pero, tampoco se trata de duplicar código, algo siempre peligroso, aunque sólo sea por la redundancia. Es decir, podría pensarse que desde el panel de administración debería contarse con la posibilidad de llamar a funciones o métodos "relacionadas" con el panel de administración, y lo mismo con los plugins, y lo mismo con los temas.
</p>
<p>
Pero al cabo terminaríamos duplicando código, o, como poco, aumentando la complejidad del mismo. Por ejemplo, cuando en Gesbit "se entra" en el panel de administración, ya se hace uso de una clase estática de nombre "Admin" que contiene métodos útiles para usarse el panel de administración.
</p>
<p>
Pero, datos como el nombre del sitio, la URL a la página principal del sitio, y otro tipo de datos relacionados con el sitio en cuestión, se necesitan tanto en el panel de administración, como en los plugins, y también en los temas. Y de ahí a la clase "G" había un paso...
</p>
<p>
Podría, sencillamente, haberse renombrado el archivo "gb-themesaid.php", por ejemplo, como "gb-helpfunctions.php", de modo que su nombre no diera lugar a equívocos, su "ámbito" quedara más o menos claro que era global. Sin embargo, utilizar una clase nos ofrece algunas ventajas.
</p>
<p>
Por ejemplo, la clase "se autoincluye" cuando es necesaria. Gracias a la función mágica de <a href="http://www.php.net/" title="PHP.net">PHP</a> <a href="http://es.php.net/manual/es/language.oop5.autoload.php" title="Manual de PHP sobre la función autoload">"__autoload()"</a> nos olvidamos de requerir el supuesto archivo "gb-helpfunctions.php". Pero, además, la clase aporta un "espacio" concreto, que podremos diferenciar de otros espacios si es necesario.
</p>
<p>
Así que creo que no he hecho mal en implementar la clase "G", y, si me queda alguna duda, es sobre su nombre. De una sola letra. Sin embargo, esta letra puede interpretarse como "Global" o "Gesbit" (functions) y además lo que pudiera parecer una cosa extraña, una sola letra, puede resultar en una ventaja a la hora de hacer uso de la clase.
</p>
<p>
En todo caso, como no puede ser de otro modo, todo esto está sujeto a cambios. Y es que me parece increíble la cantidad de cambios que podemos sentirnos tentados (cuando no obligados) a hacer en cosas que uno pensaría que ya estaban, que no podían estar mejor. Ja. Los cambios parecen ser inevitables.
</p>]]></description>
      </item>
      
     </channel>
    </rss>