<?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>Damián Culotta &#187; Php</title>
	<atom:link href="http://www.damianculotta.com.ar/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.damianculotta.com.ar</link>
	<description>Sería un &#34;bienvenidos a mi&#34;, pero Rozitchner me ganó de mano</description>
	<lastBuildDate>Thu, 05 Jan 2012 09:10:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Url friendly en CodeIgniter</title>
		<link>http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/</link>
		<comments>http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 13:00:45 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[frameworks]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=1856</guid>
		<description><![CDATA[CodeIgniter nos permite la utilización de urls amistosas (si, la traducción suena bastante fea). Dado que por defecto ésto no funciona, tenemos que hacer algunos pequeños ajustes. Lo primero será crear un archivo .htaccess con lo siguiente. RewriteEngine on RewriteCond &#8230; <a href="http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="sitio oficial" href="http://codeigniter.com/" target="_self">CodeIgniter</a> nos permite la utilización de urls amistosas (si, la traducción suena bastante fea).</p>
<p>Dado que por defecto ésto no funciona, tenemos que hacer algunos pequeños ajustes.</p>
<p>Lo primero será crear un archivo .htaccess con lo siguiente.</p>
<pre class="apache">RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]</pre>
<p>A partir de ahora, en lugar de usar:</p>
<pre class="text">http://www.dominio.com.ar/index.php/controlador/accion/</pre>
<p>Vamos a poder usar:</p>
<pre class="text">http://www.dominio.com.ar/controlador/accion/</pre>
<p>Para que la impresión de urls resulte correcta, es necesario hacer un ajuste en el archivo de configuración. Esto aplica en particular si vamos a usar la función site_url del <a title="documentación oficial" href="http://codeigniter.com/user_guide/helpers/url_helper.html" target="_self">helper Url</a>.</p>
<p>Para evitar que al llamar a la función nos devuelva http://www.dominio.com.ar/index.php, vamos a cambiar la línea 23 de /system/application/config/config.php, y vamos a dejar el valor de la key index_page en blanco.</p>
<p>La configuración debería quedar de ésta forma:</p>
<pre class="php">$config['index_page'] = "";</pre>
<p>Con estos pequeños ajustes ya deberíamos estar aplicando urls semánticas sin problemas.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1856" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/" title="Primeros pasos con CodeIgniter">Primeros pasos con CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/" title="Creando un nuevo controller en CodeIgniter">Creando un nuevo controller en CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/" title="Iniciar un proyecto con CodeIgniter">Iniciar un proyecto con CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/17/collabtive-ci-0-6-5-2/" title="Collabtive-CI 0.6.5.2">Collabtive-CI 0.6.5.2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creando un nuevo controller en CodeIgniter</title>
		<link>http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/</link>
		<comments>http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/#comments</comments>
		<pubDate>Tue, 11 May 2010 23:17:00 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=1730</guid>
		<description><![CDATA[Vamos a crear nuestro primer controlador, para luego ir sumando los otros elementos del patrón MVC. A manera de ejercicio vamos a ir armando, a lo largo de varios posts, una pequeña y sencilla aplicación que nos obligue a loguearnos &#8230; <a href="http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vamos a crear nuestro primer controlador, para luego ir  sumando los otros elementos del <a title="definición en  Wikipedia" href="http://es.wikipedia.org/wiki/Modelo_Vista_Controlador" target="_self">patrón MVC</a>.</p>
<p>A  manera de ejercicio vamos a ir armando, a lo largo de varios posts, una  pequeña y sencilla aplicación que nos obligue a loguearnos para que  luego podamos realizar alguna tarea (sobre la marcha veremos qué se  puede armar).</p>
<p>Siguiendo ésta línea, vamos a crear un controlador que nos obligará a loguearnos. De ésta forma, se convertirá en el controlador por defecto de la aplicación.</p>
<p>Cuando comenzamos a jugar o trabajar con el framework, vamos a ver que nos aparece un mensaje de bienvenida. Justamente, es el controlador Welcome el que se hace presente.</p>
<p>Ahora bien, por qué ese controlador y no otro. Esto se debe a que una de las configuraciones de <a title="sitio oficial" href="http://codeigniter.com/" target="_self">CodeIgniter</a> nos permite especificar cuál controlador se ejecutará por defecto.</p>
<p>Para saber cuál es o para cambiarlo, debemos acceder al archivo /system/application/config/routes.php y buscar los siguientes valores (serán los únicos no comentados):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$route</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default_controller'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;welcome&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$route</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'scaffolding_trigger'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Vamos a cambiar el valor de default_controller a login. Debe quedarnos de la siguiente forma.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$route</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default_controller'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;login&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$route</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'scaffolding_trigger'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Entendido esto, creamos nuestro primer controlador. En la carpeta /system/application/controllers tenemos el archivo welcome.php. Ese es el controlador (el único) que vamos a encontrar.</p>
<p><span id="more-1730"></span>Hacemos una copia y vamos a llamar al archivo login.php. Al abrir el archivo tendremos el siguiente código.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Welcome <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> Welcome<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span><span style="color: #004000;">Controller</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">view</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'welcome_message'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Lo primero que tenemos que hacer es cambiar el nombre de la clase.</p>
<p>Si prestan atención, dado que el framework es compatible con las versiones 4 y 5 de Php, todas las clases que veremos vienen programadas para Php 4. Esto no quita que nosotros podamos continuar nuestro desarrollo armando nuestras clases en Php 5.</p>
<p>Dicho ésto, nuestro controller Login lo haremos de esa forma, así que el cambio no será sólo de nombre, sino que declararemos los métodos como públicos y modificaremos el constructor de la clase.</p>
<p>El resultado debería quedarnos de la siguiente forma.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Login <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span><span style="color: #004000;">Controller</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">view</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'welcome_message'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Si bien el controller ya funcionaría, todavía nos faltan algunos detalles para darnos cuenta, efectivamente, que el controlador que va a ejecutarse es el nuestro.</p>
<p>Dentro del método index(), podemos ver que se invoca a la vista welcome_message. Esa vista puede encontrarse en /system/application/views/welcome_message.php. De más está decir que el nombre de la vista se corresponde con el nombre del archivo (sin la extensión).</p>
<p>Siguiendo nuestro primer experimento, vamos a duplicar también ese archivo y vamos a llamarlo login.php. A éste archivo pueden hacerle las modificaciones que consideren necesarias. Ahora tenemos que indicarle al controlador que en lugar de utilizar la vista welcome_message, utilize la nuestra.</p>
<p>El código final nos quedaría de la siguiente forma.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Login <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span><span style="color: #004000;">Controller</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">view</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Y si refrescamos nuestro navegador, veríamos algo similar a ésta pantalla (dependiendo de lo que hayan cambiado en la vista) .</p>
<p><a href="http://www.damianculotta.com.ar/wp-content/uploads/2010-05-11-19-38-codeigniter-custom-controller-view.png"><img class="aligncenter size-medium wp-image-1739" title="Ejemplo de controlador y vista en CodeIgniter" src="http://www.damianculotta.com.ar/wp-content/uploads/2010-05-11-19-38-codeigniter-custom-controller-view-300x138.png" alt="" width="300" height="138" /></a></p>
<p>Como ven, resulta bastante sencillo dar los primeros pasos.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1730" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/" title="Url friendly en CodeIgniter">Url friendly en CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/" title="Primeros pasos con CodeIgniter">Primeros pasos con CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/" title="Iniciar un proyecto con CodeIgniter">Iniciar un proyecto con CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/17/collabtive-ci-0-6-5-2/" title="Collabtive-CI 0.6.5.2">Collabtive-CI 0.6.5.2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primeros pasos con CodeIgniter</title>
		<link>http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/</link>
		<comments>http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 02:29:18 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[frameworks]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=1728</guid>
		<description><![CDATA[Ya habíamos visto (hace un tiempo) cómo se compone, mínimamente, la estructura de directorios y archivos que componen CodeIgniter. Una vez que hayas descomprimido el framework, ya estamos listos para empezar. Lo primero que deberíamos hacer es comenzar con las &#8230; <a href="http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ya habíamos visto (hace un tiempo) cómo se compone, mínimamente, la estructura de directorios y archivos que componen <a title="sitio oficial" href="http://codeigniter.com/" target="_self">CodeIgniter</a>.</p>
<p>Una vez que hayas descomprimido el framework, ya estamos listos para empezar.<br />
Lo primero que deberíamos hacer es comenzar con las configuraciones básicas. Para esto vamos a abrir el archivo /system/application/config/config.php y vamos a cambiar el primer parámetro en la línea 14:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'base_url'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://example.com/&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Lo vamos a cambiar por la url completa de nuestra aplicación.<br />
Vamos a suponer que se tratara de este mismo blog, la url quedaría de la siguiente forma.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'base_url'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://www.damianculotta.com.ar/&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Como bien dice el manual, si vamos a utilizar base de datos, debemos especificar la configuración en /system/application/config/database.php. Busquemos la siguiente sección:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'hostname'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;localhost&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbdriver'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;mysql&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbprefix'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pconnect'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'db_debug'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cache_on'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cachedir'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'char_set'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;utf8&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbcollat'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;utf8_general_ci&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Y completemos, al menos, los datos de conexión a nuestra base de datos.</p>
<p>Cuando accedamos a nuestra url, veremos el mensaje de bienvenida que es manejado por el controller Welcome del framework.</p>
<p>Con esto ya estamos listos para comenzar a desarrollar nuestra primera aplicación.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1728" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/" title="Url friendly en CodeIgniter">Url friendly en CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/" title="Creando un nuevo controller en CodeIgniter">Creando un nuevo controller en CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/" title="Iniciar un proyecto con CodeIgniter">Iniciar un proyecto con CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/17/collabtive-ci-0-6-5-2/" title="Collabtive-CI 0.6.5.2">Collabtive-CI 0.6.5.2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iniciar un proyecto con CodeIgniter</title>
		<link>http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/</link>
		<comments>http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 06:49:19 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[frameworks]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=1652</guid>
		<description><![CDATA[En Php podemos encontrar gran cantidad de frameworks que buscan resolver cuestiones estructurales al momento de plantearnos una aplicación. Uno de ellos, es CodeIgniter. Este post no trata sobre vender las bondades del framework, sino sobre cómo empezar a usarlo. &#8230; <a href="http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En <a title="sitio oficial" href="http://www.php.net/" target="_self">Php</a> podemos encontrar gran cantidad de frameworks que buscan resolver cuestiones estructurales al momento de plantearnos una aplicación. Uno de ellos, es <a title="sitio oficial" href="http://codeigniter.com/" target="_self">CodeIgniter</a>.</p>
<p>Este post no trata sobre vender las bondades del framework, sino sobre cómo empezar a usarlo.</p>
<p>Inicializar un proyecto es algo bastante sencillo y rápido.</p>
<p>Lo primero será <a title="descarga de CodeIgniter" href="http://codeigniter.com/downloads/" target="_self">descargar CodeIgniter</a>.</p>
<p>Una vez descomprimido el paquete (y suponiendo que lo ubicamos en el directorio del proyecto) nos vamos a encontrar con la siguiente estructura.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">/
|
+--/ system
|
+--/ user_guide
|
+-- index.php
|
+-- license.txt</pre></div></div>

<p>Ahora, si apuntamos con nuestro navegador hacia la dirección/carpeta en donde esté el proyecto, tendríamos que ver la siguiente página.</p>
<p><a href="http://www.damianculotta.com.ar/wp-content/uploads/2009-11-28-20-09-code-igniter-welcome.png"><img class="aligncenter size-medium wp-image-1660" title="Bienvenida de CodeIgniter" src="http://www.damianculotta.com.ar/wp-content/uploads/2009-11-28-20-09-code-igniter-welcome-300x154.png" alt="Bienvenida de CodeIgniter" width="300" height="154" /></a></p>
<p><span id="more-1652"></span>Esto quiere decir que vamos bien, pero en realidad no hemos hecho nada hasta ahora.</p>
<p>Dentro de la carpeta system vamos a encontrar unas cuantas subcarpetas que son las que conforman el framework, pero a nosotros nos importará el contenido de application.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">/
|
+--/ system
   |
   +--/ application
      |
      +--/ config
      |
      +--/ controllers
      |
      +--/ errors
      |
      +--/ helpers
      |
      +--/ hooks
      |
      +--/ language
      |
      +--/ libraries
      |
      +--/ models
      |
      +--/ views
      |
      +-- index.html</pre></div></div>

<p>Es con ésta estructura con la que vamos a trabajar para darle forma a nuestro desarrollo. Aunque primero, debemos entender por y para qué ésta estructura y dónde debemos meter mano para comenzar.</p>
<p>En el directorio config, por más obvio que resulte, encontraremos varios archivos de configuración que nos permitirían establecer una serie de parámetros para la aplicación que van desde url, logs, cache, base de datos hasta tablas de ruteo y controlador por defecto.</p>
<p>El directorio controllers tiene (seguimos con las obviedades) los controladores de la aplicación, que serán quienes se encarguen de manejar la peticiones del usuario y realizar las acciones pertinentes.</p>
<p>Dentro de errors podemos dejar nuestras páginas de error personalizadas.</p>
<p>En helpers irán funciones que nos ayudarán a resolver alguna funcionalidad o a complementar algún proceso. Los helpers en <a title="sitio oficial" href="http://codeigniter.com/" target="_self">CodeIgniter</a> son funciones procedurales.</p>
<p>CI soporta la implementación de diferentes idiomas, por lo cual, cada archivo de idioma qeu fuéramos a utilizar, debería guardarse en el directorio language.</p>
<p>El objetivo de libraries es ordenar clases que necesitemos para extender funcionalidad del framework, agregar nuevas, o incluso sobreescribir clases existentes.</p>
<p>Los models son los encargados de interactuar con nuestra base de datos. (Con ésta brevísima explicación no busco desarrollar el concepto de modelos del MVC, sino dar una idea de cómo estructurar la aplicación).</p>
<p>Finalmente, el directorio views contendrá las vistas que serán invocadas desde los diferentes controladores.</p>
<p>A partir de ahora, con la <a title="documentación oficial" href="http://codeigniter.com/user_guide/" target="_self">documentación de CodeIgniter</a> a mano, tendremos que empezar a tocar las configuraciones y crear nuestros primeros controladores.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1652" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2010/08/09/url-friendly-en-codeigniter/" title="Url friendly en CodeIgniter">Url friendly en CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2010/05/11/creando-un-nuevo-controller-en-codeigniter/" title="Creando un nuevo controller en CodeIgniter">Creando un nuevo controller en CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2010/04/08/primeros-pasos-con-codeigniter/" title="Primeros pasos con CodeIgniter">Primeros pasos con CodeIgniter</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/17/collabtive-ci-0-6-5-2/" title="Collabtive-CI 0.6.5.2">Collabtive-CI 0.6.5.2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2009/12/02/iniciar-un-proyecto-con-codeigniter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>¿Cómo saber si una constante ha sido definida en Php?</title>
		<link>http://www.damianculotta.com.ar/2009/06/19/como-saber-si-una-contante-ha-sido-definida-en-php/</link>
		<comments>http://www.damianculotta.com.ar/2009/06/19/como-saber-si-una-contante-ha-sido-definida-en-php/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 02:52:28 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=1455</guid>
		<description><![CDATA[Es posible que ante ciertos escenarios, utilizemos una constante para almacenar algún valor global dentro de nuestro código. Para definir una constante, basta con la siguiente línea: &#60;?php define&#40;&#34;CONSTANTE&#34;, &#34;Hola mundo.&#34;&#41;; ?&#62; Una vez definida, simplemente debemos invocarla para hacer &#8230; <a href="http://www.damianculotta.com.ar/2009/06/19/como-saber-si-una-contante-ha-sido-definida-en-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es posible que ante ciertos escenarios, utilizemos una constante para almacenar algún valor global dentro de nuestro código.</p>
<p>Para definir una constante, basta con la siguiente línea:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;CONSTANTE&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;Hola mundo.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Una vez definida, simplemente debemos invocarla para hacer uso de ese valor.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">echo</span> CONSTANTE<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//El resultado en pantalla será &quot;Hola mundo.&quot;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Normalmente, damos por sentado que dichas constantes están definidas, pero, ¿y si por algún motivo una constante no se definió?.</p>
<p>Si hacemos uso de esa constante y se diera ése último caso, lo más probable es que el resultado que obtengamos no sea el esperado.</p>
<p>Para controlar si la constante está declara, basta con hacer la siguiente pregunta.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'CONSTANTE'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> CONSTANTE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;La constante no ha sido definida&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Un tip bastante sencillo, para algunos hasta obvio, pero de seguro útil.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1455" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2010/02/15/provincias-en-un-formulario-de-contacto-personalizado-en-magento/" title="Provincias en un formulario de contacto personalizado en Magento">Provincias en un formulario de contacto personalizado en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2009/10/08/accediendo-a-configuraciones-de-magento/" title="Accediendo a configuraciones de Magento">Accediendo a configuraciones de Magento</a></li><li><a href="http://www.damianculotta.com.ar/2009/09/04/opciones-de-formatdate-en-magento/" title="Opciones de formatDate en Magento">Opciones de formatDate en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2009/06/07/cambiar-formato-a-un-valor-de-tipo-fecha-en-magento/" title="Cambiar formato a un valor de tipo Fecha en Magento">Cambiar formato a un valor de tipo Fecha en Magento</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2009/06/19/como-saber-si-una-contante-ha-sido-definida-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debuggear Php en la consola de Firebug</title>
		<link>http://www.damianculotta.com.ar/2009/05/26/debuggear-php-en-la-consola-de-firebug/</link>
		<comments>http://www.damianculotta.com.ar/2009/05/26/debuggear-php-en-la-consola-de-firebug/#comments</comments>
		<pubDate>Tue, 26 May 2009 03:15:35 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firephp]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=1388</guid>
		<description><![CDATA[A lo que ya hemos visto sobre el uso de la consola de Firebug, vamos a sumar una segunda extensión (siempre para Firefox), que nos va a permitir aprovechar la consola no sólo para Javascript, sino también para Php. Esto &#8230; <a href="http://www.damianculotta.com.ar/2009/05/26/debuggear-php-en-la-consola-de-firebug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A lo que ya hemos visto sobre el uso de la consola de <a title="sitio oficial" href="http://getfirebug.com/" target="_self">Firebug</a>, vamos a sumar una segunda extensión (siempre para <a title="sitio oficial" href="http://www.mozilla.com/firefox/" target="_self">Firefox</a>), que nos va a permitir aprovechar la consola no sólo para Javascript, sino también para Php.</p>
<p>Esto lo vamos a lograr gracias a <a title="sitio oficial" href="http://www.firephp.org/" target="_self">FirePHP</a>, que funciona integrándose sobre <a title="sitio oficial" href="http://getfirebug.com/" target="_self">Firebug</a>, y se compone de dos elementos:</p>
<ul>
<li><a title="página de la extensión" href="https://addons.mozilla.org/en-US/firefox/addon/6149" target="_self">Extensión para Firefox de FirePHP</a>.</li>
<li><a title="descarga de las librerías FirePHP" href="http://www.firephp.org/HQ/Install.htm" target="_self">Librería Php</a>.</li>
</ul>
<p>Una vez que hayas instalado la extensión, bajamos la librería (con soporte para Php 4 y 5) y la incluimos en nuestro proyecto.</p>
<p><span id="more-1388"></span>A continuación un ejemplo muy sencillo para demostrar los efectos de su uso.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">//Incluímos la librería para Php 5</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'FirePHPCore/FirePHP.class.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Instanciamos el objeto</span>
<span style="color: #000088;">$firephp</span> <span style="color: #339933;">=</span> FirePHP<span style="color: #339933;">::</span><span style="color: #004000;">getInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Definición de la variable que vamos a probar</span>
<span style="color: #000088;">$variable</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'i'</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'j'</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Invocamos los distintos métodos disponibles</span>
<span style="color: #000088;">$firephp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">log</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$variable</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Resultado de $variable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$firephp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">info</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$variable</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Resultado de $variable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$firephp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">warn</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$variable</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Resultado de $variable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$firephp</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$variable</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Resultado de $variable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Si ejecutamos éste código en nuestro navegador (con la extensión habilitada), tendríamos que ver algo como lo siguiente.</p>
<p><a href="http://www.damianculotta.com.ar/wp-content/uploads/2009-05-25-19-17-firephp-consola.png"><img class="aligncenter size-medium wp-image-1391" title="Debuggeando Php en la consola de Firebug con FirePHP" src="http://www.damianculotta.com.ar/wp-content/uploads/2009-05-25-19-17-firephp-consola-300x127.png" alt="Debuggeando Php en la consola de Firebug con FirePHP" width="300" height="127" /></a></p>
<p>De ésta forma sumamos una nueva herramienta para controlar nuestro trabajo diario.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1388" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2009/05/25/debuggeando-javascript-con-firebug/" title="Debuggeando Javascript con Firebug">Debuggeando Javascript con Firebug</a></li><li><a href="http://www.damianculotta.com.ar/2009/04/19/debuggear-variables-dentro-de-magento/" title="Debuggear variables dentro de Magento">Debuggear variables dentro de Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/17/collabtive-ci-0-6-5-2/" title="Collabtive-CI 0.6.5.2">Collabtive-CI 0.6.5.2</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/16/collabtive-ci-0-6-5-1/" title="Collabtive-CI 0.6.5.1">Collabtive-CI 0.6.5.1</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2009/05/26/debuggear-php-en-la-consola-de-firebug/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Antileech sencillo con Php</title>
		<link>http://www.damianculotta.com.ar/2009/01/27/antileech-sencillo-con-php/</link>
		<comments>http://www.damianculotta.com.ar/2009/01/27/antileech-sencillo-con-php/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 03:23:51 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=949</guid>
		<description><![CDATA[El Antileech se utiliza para evitar exponer el link directo a un archivo que pueda descargarse. Otra ventaja de ésta técnica, es que podemos forzar las descargas para que se realizen desde nuestra página. Lo que vamos a hacer, es &#8230; <a href="http://www.damianculotta.com.ar/2009/01/27/antileech-sencillo-con-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El Antileech se utiliza para evitar exponer el link directo a un archivo que pueda descargarse.</p>
<p>Otra ventaja de ésta técnica, es que podemos forzar las descargas para que se realizen desde nuestra página.</p>
<p>Lo que vamos a hacer, es generar un archivo de descarga que, dependiendo de algún parámetro que pueda llegarle, va a leer el contenido de un archivo, y ese contenido, será impreso en nuestro archivo de descarga.</p>
<p>De ésta forma, la ubicación real del archivo nunca será expuesta.</p>
<p>El ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$archivo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;documento.pdf&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$carpeta</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;descargas/&quot;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;content-disposition: attachment; filename=&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$archivo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;content-type: application/octet-stream&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;content-length: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$carpeta</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$archivo</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pragma: no-cache&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;expires: 0&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$lectura</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$carpeta</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$archivo</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lectura</span><span style="color: #339933;">,</span><span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$carpeta</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$archivo</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lectura</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Lo que nos va a interesar modificar, es el valor de las varaibles $archivo y $carpeta.</p>
<p>Según cada caso, puede llegar el nombre del archivo mediante un $_POST o un $_GET; o en lugar del nombre, algún id que a través de alguna consulta a base de datos, nos de el nombre del archivo a descargar.</p>
<p>Las posibilidades son tantas como escenarios enfrentemos.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=949" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/17/collabtive-ci-0-6-5-2/" title="Collabtive-CI 0.6.5.2">Collabtive-CI 0.6.5.2</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/16/collabtive-ci-0-6-5-1/" title="Collabtive-CI 0.6.5.1">Collabtive-CI 0.6.5.1</a></li><li><a href="http://www.damianculotta.com.ar/2011/04/01/extendiendo-la-configuracion-grafica-del-cron-en-magento/" title="Extendiendo la configuración gráfica del cron en Magento">Extendiendo la configuración gráfica del cron en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2010/09/22/configuracion-grafica-para-un-cron-job-en-magento/" title="Configuración gráfica para un cron job en Magento">Configuración gráfica para un cron job en Magento</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2009/01/27/antileech-sencillo-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conociendo el contexto de un objeto en Php</title>
		<link>http://www.damianculotta.com.ar/2008/11/10/conociendo-el-contexto-de-un-objeto-en-php/</link>
		<comments>http://www.damianculotta.com.ar/2008/11/10/conociendo-el-contexto-de-un-objeto-en-php/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 03:42:29 +0000</pubDate>
		<dc:creator>Damián</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.damianculotta.com.ar/?p=703</guid>
		<description><![CDATA[Por lo general, si formamos parte de un desarrollo desde el comienzo, nos es bastante fácil tener noción de la arquitectura completa. Existen otros casos, en los cuales llegamos con la arquitectura ya definida, pero la documentación se encarga de &#8230; <a href="http://www.damianculotta.com.ar/2008/11/10/conociendo-el-contexto-de-un-objeto-en-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Por lo general, si formamos parte de un desarrollo desde el comienzo, nos es bastante fácil tener noción de la arquitectura completa.</p>
<p>Existen otros casos, en los cuales llegamos con la arquitectura ya definida, pero la documentación se encarga de tapar esos baches con los cuales uno se topa.</p>
<p>El otro escenario posible, es la razón de ser de éste post.</p>
<p>Supongamos que estamos ante una aplicación en la cuál no tuvimos nada que ver con su arquitectura, y para rematarla, no tenemos documentación que pueda consultarse.</p>
<p>Si a esto le sumamos algunas cuestiones relacionadas con la complejidad del codigo y el grado de abstracción que pueda presentar, se nos pueden complicar un poco las tareas diarias.</p>
<p>En mi caso, la aplicación que se ajusta a éste último esquema, es <a title="la evolución del eCommerce" href="http://www.magentocommerce.com/" target="_self">Magento</a>.</p>
<p>Para los que ya han visto algo del código de ésta aplicación, en particular la capa de plantillas que utiliza, entenderán mejor hacia dónde apunto con conocer el contexto de un objeto.</p>
<p><span id="more-703"></span>Cada vez que abrimos uno de los bloques de plantillas, solemos encontrarnos con algo como esto.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getFormAction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>La primer pregunta que uno se hace es: ¿quién es $this?.</p>
<p>Bien, para sabér de qué clase se trata, vamos a usar una función <a title="sitio oficial" href="http://www.php.net" target="_self">Php</a> para saber con quién estamos lidiando.</p>
<p>Voy a tomar como ejemplo, el formulario de contacto de <a title="la evolución del eCommerce" href="http://www.magentocommerce.com/" target="_self">Magento</a>. Abrimos el archivo form.phtml, y vamos a argegar lo siguiente antes de la apertura del formulario.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">get_class</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>La función <a title="documentación en www.php.net" href="http://ar.php.net/manual/es/function.get-class.php" target="_self">get_class</a>, nos devuelve el nombre de la clase instanciada. En este caso, se trata de la clase Mage_Core_Block_Template.</p>
<p>Lo segundo que podemos probar para ubicarnos mejor, es buscar las clases de las que hereda nuestro actual objeto.</p>
<p>Para eso, volvemos a recurrir a otra función nativa, llamada <a title="documentación en www.php.net" href="http://ar.php.net/manual/es/function.class-parents.php" target="_self">class_parents</a>.</p>
<p>En la plantilla del formulario, lo aplicaríamos de la siguiente forma.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">class_parents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>El resultado de ésta llamada nos devuelve un array con las clases de las cuales hereda nuestro objeto.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Array
(
    [Mage_Core_Block_Abstract] =&gt; Mage_Core_Block_Abstract
    [Varien_Object] =&gt; Varien_Object
)</pre></div></div>

<p>Como pueden ver, con el uso de estas dos funciones, se nos simplifica significativamente conocer el contexto de un objeto.</p>
 <img src="http://www.damianculotta.com.ar/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=703" width="1" height="1" style="display: none;" /><h2  class="related_post_title">A lo mejor te interese leer</h2><ul class="related_post"><li><a href="http://www.damianculotta.com.ar/2011/04/25/como-crear-una-clase-para-el-shell-en-magento/" title="Cómo crear una clase para el Shell en Magento">Cómo crear una clase para el Shell en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2010/02/15/provincias-en-un-formulario-de-contacto-personalizado-en-magento/" title="Provincias en un formulario de contacto personalizado en Magento">Provincias en un formulario de contacto personalizado en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2009/10/08/accediendo-a-configuraciones-de-magento/" title="Accediendo a configuraciones de Magento">Accediendo a configuraciones de Magento</a></li><li><a href="http://www.damianculotta.com.ar/2009/09/04/opciones-de-formatdate-en-magento/" title="Opciones de formatDate en Magento">Opciones de formatDate en Magento</a></li><li><a href="http://www.damianculotta.com.ar/2009/06/07/cambiar-formato-a-un-valor-de-tipo-fecha-en-magento/" title="Cambiar formato a un valor de tipo Fecha en Magento">Cambiar formato a un valor de tipo Fecha en Magento</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.damianculotta.com.ar/2008/11/10/conociendo-el-contexto-de-un-objeto-en-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

