<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CalinSoft &#187; Web2Dev</title>
	<atom:link href="http://www.calinsoft.com/categoria/web2dev/feed" rel="self" type="application/rss+xml" />
	<link>http://www.calinsoft.com</link>
	<description>WeBlog Personal de Carlos Montalvo</description>
	<lastBuildDate>Wed, 30 Jun 2010 21:13:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Instalar Lamp + SVN + Trac en Ubuntu II</title>
		<link>http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-ii.html</link>
		<comments>http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-ii.html#comments</comments>
		<pubDate>Thu, 16 Apr 2009 23:34:42 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL5]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Servidor Web]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=1021</guid>
		<description><![CDATA[En la entrada anterior pudimos instalar un Servidor Web ahora veremos la instalación y configuración de SVN (Subversion).

Instalación de SVN
Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install subversion
sudo a2enmod dav
sudo /etc/init.d/apache2 restart
sudo apt-get install libapache2-svn
sudo /etc/init.d/apache2 restart

subversion: Con esto instalamos subversion.
a2enmod dav: Activamos el modulo de Apache usado para hacer que los repositorios [...]]]></description>
			<content:encoded><![CDATA[<p>En la entrada anterior pudimos <a href="http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-i.html">instalar un Servidor Web</a> ahora veremos la instalación y configuración de SVN (<a href="http://es.wikipedia.org/wiki/Subversion">Subversion</a>).</p>
<p style="text-align: center;"><img class="size-full wp-image-1018 aligncenter" title="ulamp" src="http://images.calinsoft.com/2009/04/ulamp.jpg" alt="ulamp" width="500" height="150" /></p>
<h2>Instalación de SVN</h2>
<p>Abrimos la consola (Terminal) y escribimos lo siguiente.</p>
<pre class="brush: bash">
sudo apt-get install subversion
sudo a2enmod dav
sudo /etc/init.d/apache2 restart
sudo apt-get install libapache2-svn
sudo /etc/init.d/apache2 restart
</pre>
<p><strong>subversion</strong>: Con esto instalamos subversion.</p>
<p><strong>a2enmod dav</strong>: Activamos el modulo de Apache usado para hacer que los repositorios estén disponible a otros a través de una red.</p>
<p><code><strong>/etc/init.d/apache2 restart</strong></code>: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.</p>
<p><strong>libapache2-svn</strong>: Contiene los módulos que capacitan a Apache funcionar como un servidor de Subversion además del módulo de identificación.</p>
<h2>Creación de Repositorio</h2>
<p>Primero creamos el directorio:</p>
<pre class="brush: bash">
sudo mkdir /var/svn
</pre>
<p>A continuación indicarle al Subversion que es un repositorio:</p>
<pre class="brush: bash">
sudo svnadmin create /var/svn/repos
</pre>
<p>A continuación, abrir el archivo <code><strong>/etc/apache2/httpd.conf</strong></code> y añada las siguientes líneas:</p>
<pre class="brush: bash">
&lt;location /repos&gt;
DAV svn
SVNPath /var/svn/repos
AuthType Basic
AuthName &quot;Repositorio Subversion&quot;
AuthUserFile /etc/subversion/passwd
Require valid-user
&lt;/location&gt;
</pre>
<p>Asignamos permisos para que el servidor web pueda modificar el repositorio:</p>
<pre class="brush: bash">
sudo chown -R www-data /var/svn
</pre>
<p>Añadimos un usuario le asignamos la contraseña y reiniciamos el servidor web.</p>
<pre class="brush: bash">
sudo htpasswd -c /etc/subversion/passwd calinsoft
sudo /etc/init.d/apache2 restart
</pre>
<p>Añadimos nuestro proyecto al repositorio, en mi caso mi proyecto lo tengo en esta dirección <code><strong>/home/calinsoft/bobi-system</strong></code></p>
<pre class="brush: bash">
svn import -m &quot;Mi Primer Proyecto&quot; /home/calinsoft/bobi-system file:///var/svn/repos/bobi-system/trunk
</pre>
<p>Ahora nos dirigimos a <a href="http://localhost/repos">http://localhost/repos</a> y nos pedira el usuario y password que hayamos asignado.</p>
<blockquote><p>Si necesita un <strong>Cliente SVN</strong> similar a <a href="http://tortoisesvn.tigris.org">TortoiseSVN</a> les recomiendo <a href="http://code.google.com/p/nautilussvn/wiki/Installation">NautilusSVN</a></p></blockquote>
<p>Continuara&#8230;</p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-ii.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Instalar Lamp + SVN + Trac en Ubuntu I</title>
		<link>http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-i.html</link>
		<comments>http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-i.html#comments</comments>
		<pubDate>Tue, 14 Apr 2009 03:47:23 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL5]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Servidor Web]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=1017</guid>
		<description><![CDATA[Bueno esto es un asunto que siempre quise hacer en guindos y nunca pude, cuando lo intente en Linux me salio a la primera.

Instalando Lamp (Linux Apache2 MySQL5 Php5 )
Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5 php5-gd php5-cli
sudo /etc/init.d/apache2 restart

apache2: Con esto instalamos apache en nuestro Linux. [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno esto es un asunto que siempre quise hacer en guindos y nunca pude, cuando lo intente en Linux me salio a la primera.</p>
<p style="text-align: center;"><img class="size-full wp-image-1018 aligncenter" title="ulamp" src="http://images.calinsoft.com/2009/04/ulamp.jpg" alt="ulamp" width="500" height="150" /></p>
<h3>Instalando <a href="http://es.wikipedia.org/wiki/LAMP">Lamp</a> (Linux Apache2 MySQL5 Php5 )</h3>
<p>Abrimos la consola (Terminal) y escribimos lo siguiente.</p>
<pre class="brush: bash">
sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5 php5-gd php5-cli
sudo /etc/init.d/apache2 restart
</pre>
<p><strong>apache2</strong>: Con esto instalamos apache en nuestro Linux. para ver si esta activo vamos al navegador y digitalos <a href="http://localhost">http://localhost</a>.</p>
<p style="text-align: center;"><img class="size-full wp-image-1019 aligncenter" title="it-works" src="http://images.calinsoft.com/2009/04/it-works.png" alt="it-works" width="480" height="198" class="" /></p>
<p><strong>php5</strong>: Con esto instalamos el modulo Php5 para Apache.</p>
<p><strong>libapache2-mod-php5</strong>: Instala el modulo de apache para traducir el php.</p>
<p><strong>php5-gd</strong>: Modulo de php para la manipulación de las imágenes.</p>
<p><strong>php5-cli(Command Line Interpreter)</strong>: Para ejecutar php por linea de comando.</p>
<p><code><strong>/etc/init.d/apache2 restart</strong></code>: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.</p>
<pre class="brush: bash">
sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
sudo /etc/init.d/apache2 restart
</pre>
<p><strong>mysql-server</strong>: Instalamos MySQL, el servidor de base de datos.</p>
<p><strong>libapache2-mod-auth-mysql</strong>: Modulo de apache para el manejo de autentificaciones con mysql.</p>
<p><strong>php5-mysql</strong>: Modulo de php para manejo de conexiones con MySQL.</p>
<p><strong>phpmyadmin</strong>: Administrador de MySQL atravez del navegador ( <a href="http://localhost/phpmyadmin">http://localhost/phpmyadmin</a> ).</p>
<blockquote class="info"><p>PD:Nos pedirá un nombre de usuario y contraseña, esos datos son los que definimos al momento de instalar MySQL.<br />
PD2: Si nos muestra &#8220;The requested URL /phpmyadmin/ was not found on this server&#8221; ejecuta <code>sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin</code> esto creara un acceso directo el cual permitira ya ingresar a <a href="http://localhost/phpmyadmin">http://localhost/phpmyadmin</a></p></blockquote>
<pre class="brush: bash">
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
</pre>
<p><strong>a2enmod rewrite</strong>: Activamos el Mod Rewrite.</p>
<p>En <code>/var/www</code> se publicara las paginas para tu servidor web donde puede probar el funcionamiento de Php, creando un archivo info.php y escribiendo adentro  el cual de mostrara los parámetros de configuración y las variables de php y apache.</p>
<p>Continuara&#8230;</p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2009/04/instalar-lamp-svn-trac-en-ubuntu-i.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Jugando con la Api de TinyUrl</title>
		<link>http://www.calinsoft.com/2009/02/jugando-con-la-api-de-tinyurl.html</link>
		<comments>http://www.calinsoft.com/2009/02/jugando-con-la-api-de-tinyurl.html#comments</comments>
		<pubDate>Wed, 04 Feb 2009 15:32:21 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[Servicios Web]]></category>
		<category><![CDATA[TinyUrl]]></category>
		<category><![CDATA[Url]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=979</guid>
		<description><![CDATA[He creado un acortador de Urls usando la Api de TinyUrl, sencillo pero funcional]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinyurl.com/">TinyURL</a> es un servicio web creado por Kevin Gilbertson, cuyo fin es la de acortar las urls para así ganar espacio en los contenidos limitados.</p>
<p>Gilbertson lanzo su servicio en Febrero del 2002 (casi 7 años ya), aunque se hizo conocido con la llegada de los Blogs y especialmente de <a href="http://twitter.com/">Twitter</a> donde el límite de caracteres del contenido era más reducido y era casi una necesidad ganar espacio.</p>
<h3>Api</h3>
<p><a href="http://tinyurl.com/">TinyURL</a> nos provee de una sencilla Api para poder acortar automáticamente las urls mediantes aplicaciones web sin necesidad de ir ingresar  a su sitio. Llamado a la dirección <a href="http://tinyurl.com/api-create.php?url=http://www.calinsoft.com">http://tinyurl.com/api-create.php?url=http://www.calinsoft.com</a> devolverá la dirección URL acortada en el cuerpo de la página.</p>
<h3>Jugando</h3>
<p>Estuve jugando un poco con ella, algo muy sencillo nada complicado de como poder implementarlo en una aplicación web en php lo pude lograr mediante un formulario.</p>
<p style="text-align:center">
<img src="http://images.calinsoft.com/2009/02/tinyurl-1.png" alt="tinyurl-1" title="tinyurl-1" width="351" height="73" class="alignnone size-full wp-image-981" /></p>
<p>Lo cual genera una respuesta similar a lo que muestra la misma página de TinyURL.</p>
<p style="text-align:center"><img src="http://images.calinsoft.com/2009/02/tinyurl-2.png" alt="tinyurl-2" title="tinyurl-2" width="437" height="208" class="alignnone size-full wp-image-980" /></p>
<h3>El Código</h3>
<p>Para quien le interese copio aquí el código con que he logrado hacer esto, de hecho es muy sencillo pero para ejemplo y que aprendas como se usa la Api es muy bueno.</p>
<pre class="brush: php">
&lt;?php
//http://www.calinsoft.com/2009/02/jugando-con-la-api-de-tinyurl.html
define(&#039;apiTinyUrl&#039;,
	&quot;http://tinyurl.com/api-create.php?url=&quot;);

function TinyURL($url){

	if (!empty($url)):
		# code...

		return file_get_contents( apiTinyUrl . $url );
	else:

		return false;
	endif;

}

?&gt;
&lt;?php if (!$_POST):?&gt;

&lt;form action=&quot;&quot; method=&quot;post&quot; &gt;
  &lt;table align=&quot;center&quot; cellpadding=&quot;5&quot; bgcolor=&quot;#E7E7F7&quot;&gt;
    &lt;tr&gt;&lt;td&gt;&lt;b&gt;Enter a long URL to make
          &lt;a href=&quot;http://tinyurl.com&quot;&gt;tiny&lt;/a&gt;:&lt;/b&gt;&lt;br /&gt;
        &lt;input type=&quot;text&quot; name=&quot;url&quot; size=&quot;30&quot;&gt;
        &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Make TinyURL!&quot;&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;
&lt;/form&gt;

&lt;?php else:

	if ($convert = TinyURL($_POST[&#039;url&#039;])):

		$preview = str_replace(&quot;tinyurl&quot;,&quot;preview.tinyurl&quot;,$convert);

?&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;5&quot; bgcolor=&quot;#E7E7F7&quot;&gt;
  &lt;tr&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;br /&gt;&lt;h1&gt;TinyURL was created!&lt;/h1&gt;
      &lt;p&gt;The following URL:
        &lt;blockquote&gt;&lt;b&gt;
            &lt;?php echo $_POST[&#039;url&#039;];?&gt;&lt;br /&gt;&lt;/b&gt;
          &lt;/blockquote&gt;has a length of 20 characters and resulted in the following TinyURL which has a length of 24 characters:
          &lt;blockquote&gt;&lt;b&gt;
              &lt;?php echo $convert;?&gt;&lt;/b&gt;
            &lt;br /&gt;&lt;small&gt;[
              &lt;a href=&quot;&lt;?php echo $convert;?&gt;&quot; target=&quot;_blank&quot;&gt;Open in new window&lt;/a&gt;]&lt;/small&gt;
            &lt;/blockquote&gt;Or, give your recipients confidence with a preview TinyURL:
            &lt;blockquote&gt;&lt;b&gt;
                &lt;?php echo $preview;?&gt;&lt;/b&gt;
              &lt;br /&gt;&lt;small&gt;[
                &lt;a href=&quot;&lt;?php echo $preview;?&gt;&quot; target=&quot;_blank&quot;&gt;Open in new window&lt;/a&gt;]&lt;/small&gt;
              &lt;/blockquote&gt;
      &lt;/p&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;?php

		else:
	?&gt;
	&lt;table align=&quot;center&quot; cellpadding=&quot;5&quot; bgcolor=&quot;#E7E7F7&quot;&gt;
  &lt;tr&gt;
    &lt;td valign=&quot;top&quot;&gt;&lt;br /&gt;&lt;h1&gt;TinyURL Error!&lt;/h1&gt;
      &lt;p&gt;Invalid Url:
      &lt;/p&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;

&lt;?php

		endif;

endif;
?&gt;
</pre>
<h3>Conclusión</h3>
<p>Como se habrán dado cuenta que el método de usar la Api es muy sencillo, además no es la única forma pero creo que esta es la más sencilla y funcional.</p>
<p class="button"><a href="http://www.box.net/shared/i1mtmdjmdh">Descarga</a></p>
<p class="button"><a href="http://web2dev.calinsoft.com/tinyurl/" >Demo</a></p>
<p><br class="both"></p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2009/02/jugando-con-la-api-de-tinyurl.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sistema de Caché Simple en PHP</title>
		<link>http://www.calinsoft.com/2009/01/sistema-de-cache-simple-en-php.html</link>
		<comments>http://www.calinsoft.com/2009/01/sistema-de-cache-simple-en-php.html#comments</comments>
		<pubDate>Sat, 31 Jan 2009 22:21:03 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=950</guid>
		<description><![CDATA[Creación de un Sistema de Caché Simple en php, muy flexible para poderlo adecuar a cualquier proyecto web y personalizarla a gusto.]]></description>
			<content:encoded><![CDATA[<p>Uno de las mejores alternativas para que tus proyectos en php se muestren más rápido es la de implementar un sistema de cache, con lo que ganamos velocidad y él un consumo reducido de nuestro servidor.</p>
<p>Hoy veremos un <strong>Sistema de Cache Simple en PHP</strong>, pero lo suficientemente flexible como para poder adaptarla a cualquier proyectos y personalizarla conforme a nuestras necesidades.</p>
<h3>La Clase de Cache en PHP</h3>
<pre class="brush: php">
/* file     : cache.class.php
 * Clase  : m2Cache
 * Original: http://www.calinsoft.com/2009/01/sistema-de-cache-simple-en-php.html
*/

//Algunos parámetros de configuración
define(&#039;ABSPATH&#039;, dirname(__FILE__) );

//Directorio donde almacenaremos los archivos cacheados
define(&#039;CACHE_DIR&#039;,
	ABSPATH . &#039;/cache&#039;); // tiene que tener permisos 777

//El tiempo que la copia se mantendrá vigente.
define(&#039;CACHE_TIME&#039;, 3600 ); // 3600 segundos 1 hora.

// La dirección de la Pagina Donde nos encontramos
define(&#039;PAGE&#039;,
	&#039;http://&#039;. $_SERVER[&#039;HTTP_HOST&#039;] . $_SERVER[&#039;REQUEST_URI&#039;]
);

// La dirección de la pagina con el nombre encriptado
define(&#039;CACHE_LINK&#039;,
	CACHE_DIR . &quot;/&quot; . md5( PAGE ) . &quot;.html&quot;
);

class m2Cache
{
       //Variable para activar el Sistema de Cache
	var $enableCache;

	//Variable para almacenar el tiempo de la creación del archivo
	var $time;

	function m2Cache(){
                //por defecto el sistema  de cache estará desactivado
		$this-&gt;enableCache	= false;
                //el tiempo por defecto empieza en 0
		$this-&gt;time			= 0;

	}

	//Función para activar el Sistema de cache.
	function enable(){

		$this-&gt;enableCache = true;

	}

        // Retorna el estado Actual del  Sistema.
	function status(){

		return $this-&gt;enableCache;
	}

        // Función Inicio del Cache.
	function startCache()
	{
	         // verificamos estado
		if ($this-&gt;status()):
                       //verificamos que existe la pagina en cache
			if ( @file_exists( CACHE_LINK ) ):
			        // si existe obtenemos la hora de creación del archivo.
				$this-&gt;time = @filemtime( CACHE_LINK );

                                // verificamos si está adentro del tiempo permitido.
				if ( ( time() - CACHE_TIME ) &lt; $this-&gt;time ):
					// si está adentro del tiempo
                                       // mostramos la pagina cacheada.
					@readfile( CACHE_LINK );

					 die();

				 else:
				 	//Si Expiro se elimina, para prevenir conflictos.
				 	@unlink( CACHE_LINK );

				 endif;

			endif;

			//Habilitamos el uso de búferes de salida
			ob_start();

		else:
		       // no está el activado sistema de cache
			return false;

		endif;

	}

	//función de término del sistema de cache
	function endCache()
	{
		//verificamos estado del sistema de cache
		if ($this-&gt;status()):

                        //Creamos el archivo
			$fp = fopen( CACHE_LINK , &#039;w&#039; );
			// escribimos adentro de el.
			@fwrite( $fp , ob_get_contents() );
			//cerramos
			@fclose( $fp );

			//Volcamos el búfer de salida y deshabilitamos el uso del búfer
			ob_end_flush();

		else:
		        // no está el activado sistema de cache
			return false;

		endif;

	}

}
</pre>
<h3>Método de Uso</h3>
<pre class="brush: php">
/* file: index.php
Para usarlo solo incluimos la clase dentro de la pagina que deseemos cachear.
*/

include &#039;cache.class.php&#039;;

// Instanciamos
$cache = new m2Cache();

// Activamos el cache
$cache-&gt;enable();

//al comienzo de la pagina añadimos esto

$cache-&gt;startCache();

/*
acá vendría la pagina en si comenzando supuestamente por
&lt;html&gt;
&lt;head&gt;
&lt;body&gt;
.......................
.......................
.......................

Y luego

&lt;/body&gt;
&lt;/html&gt;
*/

//al final añadimos
$cache-&gt;endCache();
</pre>
<h3>Conclusión  y Descarga de archivos</h3>
<p>Con el  parámetro <code>CACHE_DIR</code> indicamos el directorio donde almacenaremos la cache , con <code>CACHE_TIME</code> indicamos el tiempo de vida de la cache (en este caso 60 minutos/1 hora) y la función <code>$cache->enable();</code> de la clase la cual nos permite activar el sistema de cache por defecto esta desactivado (muy bueno cuando uno va hacer cambios en la pagina).</p>
<p>He realizado una mini página sencilla adaptándola al sistema de cache para que observen su funcionamiento correcto, en la cual la estructura de archivos es la siguiente.</p>
<p style="align:center">
<img src="http://images.calinsoft.com/2009/01/sistema_cache.png" alt="sistema_cache" title="sistema_cache" width="166" height="255" class="alignnone size-full wp-image-951" />
</p>
<blockquote class=info><p>Si tienen alguna duda sobre la clase pregunten, cabe resaltar como dije al principio que esta clase es muy simple pero flexible.</p></blockquote>
<p class="button" ><a href="http://www.box.net/shared/lfrfrzpgl6">Descarga</a></p>
<p><br class="both"></p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2009/01/sistema-de-cache-simple-en-php.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Generar Slugs para Urls Amigables con php</title>
		<link>http://www.calinsoft.com/2008/09/generar-slugs-para-urls-amigables-con-php.html</link>
		<comments>http://www.calinsoft.com/2008/09/generar-slugs-para-urls-amigables-con-php.html#comments</comments>
		<pubDate>Thu, 18 Sep 2008 19:58:47 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Recursos Web]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=699</guid>
		<description><![CDATA[Función para poder crear las urls amigables basados en el titulo de una noticia.]]></description>
			<content:encoded><![CDATA[<p>Hoy en día la creación <strong>slugs</strong> basados en lo títulos de nuestros artículos es muy popular. WordPress, Drupal y muchos más lo utilizan <a href="http://www.calinsoft.com/2008/08/urls-amigables-basado-en-wp_rewrite-api.html">de forma excelente</a>. Sin duda los slugs son muy favorables para el posicionamiento web (SEO) en los buscadores especialmente en Google.</p>
<p>No basta con tener configurado tu htaccess o algún <a href="http://web2dev.calinsoft.com/urls-amigables/">script que permita trabajar con urls amigables</a>, especialmente si trabajamos con una tabla de artículos necesitaremos crear un slug de los títulos para que puedan ser leídos por el método que usemos para generar urls amigables.</p>
<p>Aquí un método que anos ayudara en este proceso.</p>
<pre class="brush: php">
function caracteres_latinos($cadena){
	//acentos
	$cadena = ereg_replace(&quot;(À|Á|Â|Ã|Ä|Å|à|á|â|ã|ä|å)&quot;,&quot;a&quot;,$cadena);
	$cadena = ereg_replace(&quot;(È|É|Ê|Ë|è|é|ê|ë)&quot;,&quot;e&quot;,$cadena);
	$cadena = ereg_replace(&quot;(Ì|Í|Î|Ï|ì|í|î|ï)&quot;,&quot;i&quot;,$cadena);
	$cadena = ereg_replace(&quot;(Ò|Ó|Ô|Õ|Ö|Ø|ò|ó|ô|õ|ö|ø)&quot;,&quot;o&quot;,$cadena);
	$cadena = ereg_replace(&quot;(Ù|Ú|Û|Ü|ù|ú|û|ü)&quot;,&quot;u&quot;,$cadena);

	//la ñ
	$cadena = ereg_replace(&quot;(Ñ|ñ)&quot;,&quot;n&quot;,$cadena);

	//caracteres extraños
	$cadena = ereg_replace(&quot;(Ç|ç)&quot;,&quot;c&quot;,$cadena);
	$cadena = ereg_replace(&quot;ÿ&quot;,&quot;y&quot;,$cadena);

	return $cadena;
}

function generar_slug($cadena, $separador = &#039;-&#039;){
	//sin espacios al inicio o al final
	$cadena = trim($cadena);

	//limpiamos caracteres los latinos
	$cadena =  caracteres_latinos($cadena);

	//pasamos a minuscula la cadena
	$cadena = strtolower($cadena);

	//limpiamos saltos de lineas y tab
	$cadena = ereg_replace(&quot;[ \t\n\r]+&quot;, &quot; &quot;, $cadena);

	//limpiamos todos los caracteres invalidos
	$cadena = ereg_replace(&quot;[^ A-Za-z0-9_]&quot;, &quot;&quot;, $cadena);

	//limpieza de espacios vacios de los valores invalidos al final de la cadena
	$cadena = trim($cadena);

	//reemplazamos los espacios vacios por el separador
	$cadena = str_replace(&quot; &quot;, $separador, $cadena);

	return $cadena;
}

$str = generar_slug(&#039;Así es el ejemplo para generar el Slug ¿o no?&#039;);

//retornara #-&gt; asi-es-el-ejemplo-para-generar-el-slug-o-no
echo $str;
</pre>
<p>Muy sencillo pero practico, lo podemos usar para generar un slug del titulo de nuestros artículos y grabarlo en otro campo de nuestra tabla el cual se convertiría en un identificador de la noticia.</p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2008/09/generar-slugs-para-urls-amigables-con-php.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Convertir Array de datos en Objeto y viceversa (PHP)</title>
		<link>http://www.calinsoft.com/2008/09/convertir-array-de-datos-en-objeto-y-viceversa-php.html</link>
		<comments>http://www.calinsoft.com/2008/09/convertir-array-de-datos-en-objeto-y-viceversa-php.html#comments</comments>
		<pubDate>Sun, 07 Sep 2008 00:51:44 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/2008/09/convertir-array-de-datos-en-objeto-y-viceversa-php/</guid>
		<description><![CDATA[Alternativas para poder convertir un array a objeto y viceversa en php]]></description>
			<content:encoded><![CDATA[<p>En el foro de <a href="http://forum.weblivehelp.net/web-development/php-convert-array-object-and-vice-versa-t2.html">WebLiveHelp</a> trataban un problema de conversión de array a objeto y viceversa no se si es el mejor método de conversión pero creo una alternativa seria esta..</p>
<pre class="brush: php">
// Funcion de Objeto a Array
function object_to_array($object)
{
  if(is_array($object) || is_object($object))
  {
    $array = array();
    foreach($object as $key =&gt; $value)
    {
      $array[$key] = object_to_array($value);
    }
    return $array;
  }
  return $object;
}

// Funcion de Array a Objeto
function array_to_object($array = array())
{
	return (object) $array;
}
</pre>
<p>Metodo de funcionamiento<br />
- Trabajando con array_to_object</p>
<pre class="brush: php">
//creamos un array de dominios
$array_urls = array(&quot;a&quot;=&gt;&quot;calinsoft.com&quot;,&quot;b&quot;=&gt;&quot;gacetaucayalina.com&quot;,&quot;c&quot;=&gt;&quot;jacknoticias.com&quot;);

//Se vuelca la informacion para darnos cuenta de la estructura.
echo &quot;&lt;pre&gt;&quot;;
	var_dump($array_urls);
echo &quot;&lt;/pre&gt;&quot;;

/* nos dara
array(3) {
  [&quot;a&quot;]=&gt;
  string(13) &quot;calinsoft.com&quot;
  [&quot;b&quot;]=&gt;
  string(19) &quot;gacetaucayalina.com&quot;
  [&quot;c&quot;]=&gt;
  string(16) &quot;jacknoticias.com&quot;
}
*/

//Ahora ese array lo convertimos en objeto mediante la funcion &quot;array_to_object&quot;
$object_urls =	array_to_object($array_urls);

//Volcamos la informacion de la conversion
echo &quot;&lt;pre&gt;&quot;;
	var_dump($object_urls);
echo &quot;&lt;/pre&gt;&quot;;

/* nos dara
object(stdClass)#1 (3) {
  [&quot;a&quot;]=&gt;
  string(13) &quot;calinsoft.com&quot;
  [&quot;b&quot;]=&gt;
  string(19) &quot;gacetaucayalina.com&quot;
  [&quot;c&quot;]=&gt;
  string(16) &quot;jacknoticias.com&quot;
}
*/

//Y con el objeto ya creado para mostrar el valor &quot;a&quot;
echo $object_urls-&gt;a;
/*nos dara
    &quot;calinsoft.com&quot;
*/
</pre>
<p>- Trabajando con object_to_array</p>
<pre class="brush: php">

//Ahora creamos una clase sencilla

class object_urls{

	var $a ;
	var $b ;
	var $c ;

	//php5
	function __construct(){
		$this-&gt;a =&quot;calinsoft.con&quot;;
		$this-&gt;b =&quot;gacetaucayalina.com&quot;;
		$this-&gt;c =&quot;jacknoticias.com&quot;;

	}

	//php4
	function object_urls(){
		$this-&gt;__construct();
	}

}

//creamos un instancia de la clase
$object_urls2 = new object_urls();

//Se vuelca la informacion del objeto para darnos cuenta de su estructura.
echo &quot;&lt;pre&gt;&quot;;
	var_dump($object_urls2);
echo &quot;&lt;/pre&gt;&quot;;
/* nos dara
object(object_urls)#2 (3) {
  [&quot;a&quot;]=&gt;
  string(13) &quot;calinsoft.con&quot;
  [&quot;b&quot;]=&gt;
  string(19) &quot;gacetaucayalina.com&quot;
  [&quot;c&quot;]=&gt;
  string(16) &quot;jacknoticias.com&quot;
}

*/

//Ahora convertimos la clase en array mediante la funcion &quot;object_to_array&quot;
$array_urls2 = object_to_array($object_urls2) ;

//Volcamos la informacion de la conversion
echo &quot;&lt;pre&gt;&quot;;
	var_dump($array_urls2);
echo &quot;&lt;/pre&gt;&quot;;
/*nos dara
array(3) {
  [&quot;a&quot;]=&gt;
  string(13) &quot;calinsoft.con&quot;
  [&quot;b&quot;]=&gt;
  string(19) &quot;gacetaucayalina.com&quot;
  [&quot;c&quot;]=&gt;
  string(16) &quot;jacknoticias.com&quot;
}
*/

//Para trabajas con el array solo
echo $array_urls2[&quot;a&quot;];

/*nos dara
    &quot;calinsoft.com&quot;
*/
</pre>
<p>Espero que les aya servido <img src='http://www.calinsoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2008/09/convertir-array-de-datos-en-objeto-y-viceversa-php.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Detección Simple de Servidor Web mediante PHP</title>
		<link>http://www.calinsoft.com/2008/09/deteccion-simple-de-servidor-web-mediante-php.html</link>
		<comments>http://www.calinsoft.com/2008/09/deteccion-simple-de-servidor-web-mediante-php.html#comments</comments>
		<pubDate>Sat, 06 Sep 2008 11:25:33 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Servidor Web]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/2008/09/deteccion-simple-de-servidor-web-mediante-php/</guid>
		<description><![CDATA[La forma más sencilla de verificar bajo que servidor web estamos, es mediante las variables globales.]]></description>
			<content:encoded><![CDATA[<p>Esta es una detección simple mediante las variables globales definidas por el servidor Web para este caso usaremos <code>$_SERVER</code>.</p>
<pre class="brush: php">
//para Apache
$es_apache = ((strpos($_SERVER[&#039;SERVER_SOFTWARE&#039;], &#039;Apache&#039;) !== false) || (strpos($_SERVER[&#039;SERVER_SOFTWARE&#039;], &#039;LiteSpeed&#039;) !== false)) ? true : false;

//para IIS (Internet Information Server)
$es_IIS = (strpos($_SERVER[&#039;SERVER_SOFTWARE&#039;], &#039;Microsoft-IIS&#039;) !== false) ? true : false;

//Metodo de uso
if ($es_apache) echo &quot; Estamos Bajo Apache &quot;;

if ($es_IIS) echo &quot; Estamos IIS &quot;;
</pre>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2008/09/deteccion-simple-de-servidor-web-mediante-php.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Urls Amigables basado en WP_Rewrite API</title>
		<link>http://www.calinsoft.com/2008/08/urls-amigables-basado-en-wp_rewrite-api.html</link>
		<comments>http://www.calinsoft.com/2008/08/urls-amigables-basado-en-wp_rewrite-api.html#comments</comments>
		<pubDate>Sun, 31 Aug 2008 19:17:36 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=475</guid>
		<description><![CDATA[Clase basada en WP_Rewrite API, lo que nos permitirá crear urls amigables al mismo nivel que lo hace WordPress.]]></description>
			<content:encoded><![CDATA[<p>El tema de las <strong>Urls Amigables</strong> (friendly urls) esta relacionado con el SEO y el posicionamiento Web en los diversos buscadores <a href="http://www.google.com.pe/search?q=friendly+urls&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:es-ES:official&amp;client=firefox-a">algo que se a hablado hasta el cansancio</a>, los métodos de poder construirlas son como los colores ( para todos los gustos ).</p>
<p>En la actualidad las Urls Amigables (friendly urls) no es una simple moda Web 2, si no que en sistemas de gestión de contenidos y servicios prestigiosos como Blogger, Drupal, Wordpress y muchos más lo tienen implementado. <strong>¿Pero cual es el mejor?</strong> ya de por si se sabe que implementando <strong>Urls Amigables</strong> en tus paginas o proyectos Web estas a 2 o 3 pasos arriba que otras paginas que usan las Urls tradicionales muy aparte de la publicidad o herramientas de posicionamiento que usen.</p>
<p>Al principio no todos podían usar Urls Amigables en sus sitios, mucho dependía de tener activado el <strong>mod_rewrite</strong> ,<strong></strong> aun que WordPress fue un paso mas allá y nos dio una solución como nos <a href="http://www.anieto2k.com/2008/01/17/urls-amigables-de-pega-para-servidores-sin-mod_rewrite/">comentaba Andres Nieto a principios de año</a> desconozco si WordPress fue el pionero en esto.</p>
<p>En el posicionamiento Web 2 de los mejores son Blogger y Wordpress por el método que usan aunque este ultimo con la opción de personalizar la estructura de la url a nuestro gusto por ser una herramienta de construcción de blogs de codigo abierto que a permitido que crezca gracias a la comunidad que lo rodea.</p>
<p>Las hasta 3 formas mas conocidas de construir las <strong>Urls Amigables</strong> es <a href="http://www.tufuncion.com/urls_amigables">mediante PATH_INFO, mediante directivas en el archivo <strong>.htaccess</strong> como nos explica <strong>manu</strong> en TuFunción</a> o mediante peticiones $_GET como nos enseña <a href="http://www.maestrosdelweb.com/editorial/urlamigable/">William Wong Garay en MaestrosDelWeb</a>.</p>
<p>Todos estos métodos construyen <strong>Urls Amigables</strong> pero tienen sus limitaciones.</p>
<ul>
<li><strong>PATH_INFO</strong> no se puede expandir la estructura de Urls Amigables</li>
<li><strong>mod_rewrite y .htaccess</strong> mientras mas directivas se ralentiza el servidor</li>
<li><strong>Metodo $_GET</strong> limite del numero de variables a enviar como explica Willy</li>
</ul>
<p><strong>¿Cual método usa Wordpress?</strong> si observamos su archivo .htaccess solo utiliza unas directivas simples.</p>
<pre class="brush: bash">
# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress
</pre>
<p>El archivo clave es <strong><a href="http://trac.WordPress.org/browser/trunk/wp-includes/rewrite.php">wp-includes/rewrite.php</a> (WP_Rewrite API)</strong> el encargado de identificar las peticiones que se hacen en el sistema.</p>
<p><strong>¿Pero como trabaja? </strong>muy simple con reglas muy similares a las que se usan en el .htaccess con diferencia que estas se procesan en un archivo php y acelerando el proceso.</p>
<p><strong>¿Pero como implementarlo en una pagina que no sea WordPress?</strong> &#8230; destripando el codigo he logrado desarrollar una clase muy básica basada en <strong>WP_Rewrite API</strong> que nos permitirá personalizar la estructura de las Urls amigables al estilo Wordpress.</p>
<p>Pueden verlo en funcionamiento en <a href="http://web2dev.calinsoft.com/urls-amigables/">http://web2dev.calinsoft.com/urls-amigables</a> .</p>
<p>El funcionamiento es básico la regla esta compuesta de una <strong>Expresion Regular</strong> y la marca que vendría hacer los parámetros a usar.</p>
<pre class="brush: php">
/// para poder obtener una estructura /2008/08/28/urls-amigables-facilmente
$this-&gt;rules[&quot;([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(.+?)/?$&quot;]=&quot;y=\$matches[1]&amp;m=\$matches[2]&amp;d=\$matches[3]&amp;nslug=\$matches[4]&quot;;

//la cual mediante una identificación y parseo previo obtendríamos los valores listo para usarlos segun lo deseemos

Array
(
    [y] =&gt; 2008
    [m] =&gt; 08
    [d] =&gt; 28
    [nslug] =&gt; urls-amigables-facilmente
)
</pre>
<p><span style="text-decoration: line-through;">Los interesados pueden comentar si creen que es un buen método, tratare de afinar el script y lo publicare en estos días para mis lectores de Feed tendrán una sorpresa.</span></p>
<p class="button"><a href="http://www.box.net/shared/3zze6m4jca">Descarga</a></p>
<p class="button"><a href="http://web2dev.calinsoft.com/urls-amigables/">Demo</a></p>
<p><br class="both"></p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2008/08/urls-amigables-basado-en-wp_rewrite-api.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Comenzando MVC con php</title>
		<link>http://www.calinsoft.com/2008/08/comenzando-mvc-con-php.html</link>
		<comments>http://www.calinsoft.com/2008/08/comenzando-mvc-con-php.html#comments</comments>
		<pubDate>Sat, 02 Aug 2008 22:18:49 +0000</pubDate>
		<dc:creator>Carlos Montalvo</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Web2Dev]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación Web]]></category>
		<category><![CDATA[Web2Development]]></category>

		<guid isPermaLink="false">http://www.calinsoft.com/?p=28</guid>
		<description><![CDATA[Una explicación  breve del Significado de MVC con un ejemplo muy práctico.]]></description>
			<content:encoded><![CDATA[<p><a href="http://es.wikipedia.org/wiki/Modelo_Vista_Controlador">MVC</a> es un patrón de diseño en ingeniería de software, este mismo patrón lo vemos implementado en algunos frameworks PHP tales como.</p>
<ul>
<li><a title="http://www.cakephp.org" href="http://www.cakephp.org/">CakePHP</a></li>
<li><a title="http://codeigniter.com/" href="http://codeigniter.com/">CodeIgniter</a></li>
<li><a title="http://www.kumbiaphp.com" href="http://www.kumbiaphp.com/">Kumbia</a></li>
<li><a title="http://framework.zend.com" href="http://framework.zend.com">Zend Framework</a></li>
<li><a title="http://framework.zend.com" href="http://framework.zend.com">y otros.</a></li>
</ul>
<p style="text-align:center"><img class="alignnone size-full wp-image-29" title="mvc-architecture" src="http://images.calinsoft.com/2008/08/mvc-architecture.gif" alt="" width="351" height="301" /></p>
<p>Ejemplo de una consulta sencilla de la forma más usada.</p>
<pre class="brush: php">
&lt; ?php
function get_posts()
{
  mysql_connect(...);
 $resultado = mysql_query(&#039;SELECT * FROM wp_posts ORDER BY date DESC&#039;);

  $posts = array();
  while($post = mysql_fetch_objects($resultado)) {
	$posts[] = $post;
  }
  return $posts;
}
?&gt;
</pre>
<p>Usando el patrón de diseño MVC en este mismo ejemplo quedaría así.</p>
<h3>Modelo ( modelo.php )</h3>
<pre class="brush: php">
&lt; ?php
function get_posts()
{
  mysql_connect(...);
 $resultado = mysql_query(&#039;SELECT * FROM wp_posts ORDER BY date DESC&#039;);

  $posts = array();
  while($post = mysql_fetch_objects($resultado)) {
	$posts[] = $post;
  }
  return $posts;
}
?&gt;
</pre>
<p><span id="more-28"></span></p>
<h3>Controlador ( controlador.php )</h3>
<pre class="brush: php">
&lt; ?php
	$posts = get_posts();
	display_template(&#039;vista.tpl&#039;);
?&gt;
</pre>
<h3>Vista ( vista.tpl )</h3>
<pre class="brush: php">
&lt;html&gt;
  &lt;body&gt;
    &lt;h1&gt;Ultimas entradas&lt;/h1&gt;
	&lt; ?php foreach ($posts as $post) { ?&gt;
		&lt;h2&gt;&lt; ?php echo $post-&gt;title; ?&gt;&lt;/h2&gt;
		&lt;p&gt;&lt; ?php echo $post-&gt;content; ?&gt;&lt;/p&gt;
	&lt; ?php } ?&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>Explicación breve: </strong><br />
En el <em>Modelo</em> declaramos una función conteniendo la consulta de datos retornando el array de los datos.</p>
<p>En el <em>Controlador</em> es donde manipulamos las funciones del modelo; en cuyo caso se ejecuta la función y se le asigna a una variable y mostramos la vista.</p>
<p>En la Vista en donde mostramos los datos ejecutados por el controlador</p>
<p>Notaran que implementando el patrón de diseño MVC logramos separar el código php (funcionalidad), del html (diseño) en gran parte; esto es un gran avance enfocándonos no solo en la programación si no también al diseño.</p>
<p>Con una aplicación mayor tendríamos varias ventajas implementando MVC tanto reutilización de código por otro programador como para poder reducir el tiempo de modificar y añadir mejoras a la aplicación.</p>
<p>El MVC no solo se puede implantar en PHP, si no en cualquier lenguaje (JAVA, Ruby, Perl y Otros ).</p>
<p>MVC no a tenido tanto excito en php como en otros lenguajes de programación ( por el momento ), creo para mi humilde opinión por que existen diversas alternativas de FrameWork para PHP y ninguna termina de convencer pero la mas completa que he utilizado es Zend FrameWork.</p>
<hr><p>&copy;2010 <a href="http://www.calinsoft.com">CalinSoft</a>. El contenido de este weblog está bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="nofollow">Creative Commons (Reconocimiento - Compartir igual)</a></p>.]]></content:encoded>
			<wfw:commentRss>http://www.calinsoft.com/2008/08/comenzando-mvc-con-php.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
