<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Nekro's Blog</title>
    <link>http://www.nekrox.com/</link>
    <description>&#x26;lt;blog&#x26;gt; nekro &#x26;lt;/blog&#x26;gt;</description>
    <copyright>Alvaro Lizama Molina (c) 2008 </copyright>
        <pubDate>Wed, 21 May 2008 00:52:00 -0700</pubDate>
        <generator>http://www.textmotion.org</generator>
                <item>
        <title>HMVC: Como tener una app mas modular y ordenada en Code Igniter</title>
                <guid isPermaLink="true">http://www.nekrox.com/blog/view/31/hmvc-como-tener-una-app-mas-modular-y-ordenada-en-code-igniter</guid>
        <link>http://www.nekrox.com/blog/view/31/hmvc-como-tener-una-app-mas-modular-y-ordenada-en-code-igniter</link>
        <description>Una de las cosas mas difíciles al usar el CI(Code Igniter) es decidir como vas a ordenar tus controladores,modelos,vistas,etc. Cuando trabajas con varias personas te das cuenta que cada una tiene su forma muy particular de ordenar las cosas y aveces es difícil ponerse de acuerdo o acostumbrarse a otras formas. Esto se podría solucionar fácil con &#x3C;a  href=&#x22;http://codeigniter.com/wiki/Modular_Extensions_-_HMVC&#x22;&#x3E;&#x3C;span&#x3E;HMVC.&#x3C;/span&#x3E;&#x3C;/a&#x3E;&#x3C;br /&#x3E;&#x3C;br /&#x3E;HMVC es una extensión para crear módulos independientes para CI es decir cada modulo tendrá su propio controlador su propio modelo sus propias librerías y ayudantes. Todo esto se pone en application/modules/tumodulo siguiendo la estructura de directorios de application/. Todo esto ayuda a tener un orden y así pasar de tener todas los controladores,modelos,vistas,etc revueltas en un solo directorio o usar subdirectorios(que aveces causan problemas x()&#x3C;br /&#x3E;&#x3C;br /&#x3E;Con la rama 4.0.X del HMVC hay que crear un controlador para que cargue el modulo que se quiere, ademas de crear una entrada en el routes.php, ademaaas de que XD hay que hacer unos sucios hacks para que trabajen bien los módulos da error al querer pesarle parámetros a los métodos. PEROOO todo esto se soluciona con la rama 4.1.X &#x3C;img  src=&#x22;http://www.nekrox.com/media/emoticons/default/tongue.png&#x22; width=&#x22;16&#x22; height=&#x22;16&#x22; /&#x3E; que hace un &#x22;hack&#x22; muy nice al CI creando una extensión de la clase Controller. Ahora basta con poner los archivos dentro de application/modules/tumodulo y ya funcionan como si se trataran de un controlador normal.&#x3C;br /&#x3E;&#x3C;br /&#x3E;Ya a lo practico hagamos una app con tos módulos.&#x3C;br /&#x3E;&#x3C;br /&#x3E;Lo primero es instalar el HMVC que lo pueden descargar de &#x3C;a  href=&#x22;http://codeigniter.com/wiki/File:modular_extensions_4105.zip/&#x22;&#x3E;&#x3C;span&#x3E;aquí.&#x3C;/span&#x3E;&#x3C;/a&#x3E; Para instalarlo solo se descomprime y los archivos Controller.php y MY_Router.php en el directorio libraries y los otros dos en helpers.&#x3C;br /&#x3E;&#x3C;br /&#x3E;&#x3C;span class=&#x22;code&#x22;&#x3E;system/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;application/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;libraries/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;Controller.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;MY_Router.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;helpers/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;modules_helper.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;debug_helper.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;modules/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;home/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;controllers/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;home.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;views/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;home.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;user/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;controllers/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;user.php&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;views/&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;home.php&#x3C;/span&#x3E;&#x3C;br /&#x3E;&#x3C;br /&#x3E;Esta seria nuestra estructura de directorios y archivos. A partir de ahora crearemos un modulo para cada controlador:&#x3C;br /&#x3E;&#x3C;br /&#x3E;&#x3C;span class=&#x22;code&#x22;&#x3E;&#x26;lt;?php&#x3C;br /&#x3E;class&#x26;nbsp;Home&#x26;nbsp;extends&#x26;nbsp;Controller&#x3C;br /&#x3E;{&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;function&#x26;nbsp;__construct(){&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;parent::Controller();&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;}&#x3C;br /&#x3E;&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;function&#x26;nbsp;index(){&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;return&#x26;nbsp;$this-&#x26;gt;load-&#x26;gt;view('home');&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;}&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x3C;br /&#x3E;&#x3C;br /&#x3E;}&#x3C;/span&#x3E;&#x3C;br /&#x3E;&#x3C;span class=&#x22;code&#x22;&#x3E;&#x26;lt;h1&#x26;gt;Modulo&#x26;nbsp;home&#x26;lt;/h1&#x26;gt;&#x3C;/span&#x3E;&#x3C;br /&#x3E;&#x3C;br /&#x3E;Este modulo solo carga una vista, pero hay que notar dos cosas con esta nueva versión la clase del controlador Home hereda de Controller(recuerdan el que Controller.php extiende la clase Controller del CI) y ya no mas de Module y la otra es que en la nueva versión de CI ya no se cierra el tag &#x26;lt;?php cuando haces un modulo o controlador lol(para mas dudas sobre eso lean el Changelog).&#x3C;br /&#x3E;&#x3C;br /&#x3E;&#x3C;span class=&#x22;code&#x22;&#x3E;&#x26;lt;?php&#x3C;br /&#x3E;class&#x26;nbsp;User&#x26;nbsp;extends&#x26;nbsp;Controller&#x3C;br /&#x3E;{&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;function&#x26;nbsp;__construct(){&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;parent::Controller();&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;}&#x3C;br /&#x3E;&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;function&#x26;nbsp;index(){&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;$data&#x26;nbsp;=&#x26;nbsp;array('content'&#x26;nbsp;=&#x26;gt;&#x26;nbsp;&#x26;quot;user&#x26;quot;);&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;return&#x26;nbsp;$this-&#x26;gt;load-&#x26;gt;view('home',$data);&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;}&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;function&#x26;nbsp;lol($arg){&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;$data&#x26;nbsp;=&#x26;nbsp;array('content'&#x26;nbsp;=&#x26;gt;&#x26;nbsp;$arg);&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;return&#x26;nbsp;$this-&#x26;gt;load-&#x26;gt;view('home',$data);&#x3C;br /&#x3E;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;&#x26;nbsp;}&#x3C;br /&#x3E;&#x3C;br /&#x3E;}&#x3C;/span&#x3E;&#x3C;br /&#x3E;&#x3C;br /&#x3E;&#x3C;span class=&#x22;code&#x22;&#x3E;&#x26;lt;?=$content?&#x26;gt;&#x3C;/span&#x3E;&#x3C;br /&#x3E;Y esta seria el segundo modulo con su controlador y su vista.&#x3C;br /&#x3E;&#x3C;br /&#x3E;Para ver que trabaje solo tendremos que ir a las siguientes url:&#x3C;br /&#x3E;&#x3C;br /&#x3E;dominio.lo/index.php/home&#x3C;br /&#x3E;dominio.lo/index.php/user&#x3C;br /&#x3E;dominio.lo/index.php/user/lol/foobar&#x3C;br /&#x3E;&#x3C;br /&#x3E;!Así de simple ahora!&#x3C;br /&#x3E;</description>
        <author>me@nekrox.com (Alvaro Lizama Molina)</author>
                <pubDate>Wed, 21 May 2008 00:52:00 -0700</pubDate>
      </item>
            <item>
        <title> Code igniter un framework ligero</title>
                <guid isPermaLink="true">http://www.nekrox.com/blog/view/4/code-igniter-un-framework-ligero</guid>
        <link>http://www.nekrox.com/blog/view/4/code-igniter-un-framework-ligero</link>
        <description>&#x3C;span style=&#x22;font-weight: bold&#x22;&#x3E;
    Que es un 
&#x3C;/span&#x3E;
&#x3C;a  href=&#x22;http://es.wikipedia.org/wiki/Framework&#x22;&#x3E;
  &#x3C;span style=&#x22;font-weight: bold&#x22;&#x3E;
    framework  
  &#x3C;/span&#x3E;
  &#x3C;br /&#x3E;
&#x3C;/a&#x3E;
&#x3C;a  href=&#x22;http://es.wikipedia.org/wiki/Framework&#x22;&#x3E;
    
&#x3C;/a&#x3E;
&#x3C;br /&#x3E;
Básicamente es la base para en este caso desarrollar un software, nos da toda una estructura para poder organizar todos sus componentes y ala vez nos facilita algunas de las tareas triviales. Esto es de gran ayuda para los programadores ya que facilita mucho el trabajo, hace que los proyectos salgan en menor tiempo y da unas bases muy solidas en las cuales trabajar.
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;span style=&#x22;font-weight: bold&#x22;&#x3E;
    Code Igniter  
  &#x3C;br /&#x3E;
    
  &#x3C;br /&#x3E;
&#x3C;/span&#x3E;
&#x3C;a  href=&#x22;http://codeigniter.com/&#x22;&#x3E;
  Code igniter
&#x3C;/a&#x3E;
 (CI de aquí en adelante) es un framework escrito en php para desarrollar aplicaciones php realmente completas. De las características que me gustan de este framework es que tiene una amplia variedad de librerías que ayudan con muchas tareas triviales. 
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Entre las características de este framework están que no requieren configuración alguna para poder usarse, es compatible con diferentes versiones de php (si si php 5 se usa en todos lados pero demás no esta :P), es extremadamente flexible (aun que esto aveces puede ser malo si se abusa de esta flexibilidad), el uso de 
&#x3C;a  href=&#x22;http://es.wikipedia.org/wiki/Modelo_Vista_Controlador&#x22;&#x3E;
  MVC
&#x3C;/a&#x3E;
 como patron de diseño y tiene muy buena documentacion &#x3C;img  src=&#x22;http://www.nekrox.com/media/emoticons/default/smile.png&#x22; width=&#x22;16&#x22; height=&#x22;16&#x22; /&#x3E; la cual pueden consultar 
&#x3C;a  href=&#x22;http://codeigniter.com/user_guide/&#x22;&#x3E;
    aquí.
&#x3C;/a&#x3E;
 
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Apartir de aquí cada tanto tiempo tratare de poner en artículos relacionados con el CI, primero lo básico de la documentación (que bien hace falta por que no hay en español) y cosas que he ido a prendiendo con su uso. 
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Por lo pronto la 
&#x3C;a  href=&#x22;http://codeigniter.com/user_guide/&#x22;&#x3E;
    documentacion oficial
&#x3C;/a&#x3E;
 puede ayudarles mucho y tambien en el canal 
&#x3C;span style=&#x22;font-style: italic&#x22;&#x3E;
    #codeigniter-es @ freenode.org 
&#x3C;/span&#x3E;
pueden obtener mucha ayuda. &#x3C;img  src=&#x22;http://www.nekrox.com/media/emoticons/default/smile.png&#x22; width=&#x22;16&#x22; height=&#x22;16&#x22; /&#x3E;
&#x3C;br /&#x3E;
&#x3C;span style=&#x22;font-weight: bold&#x22;&#x3E;
&#x3C;/span&#x3E;</description>
        <author>me@nekrox.com (Alvaro Lizama Molina)</author>
                <pubDate>Sun, 20 Jan 2008 18:04:13 -0800</pubDate>
      </item>
            </channel>
</rss>
