{"id":187,"date":"2014-08-24T01:28:20","date_gmt":"2014-08-23T23:28:20","guid":{"rendered":"http:\/\/luismaseda.com\/wp\/?p=187"},"modified":"2021-03-19T11:44:46","modified_gmt":"2021-03-19T09:44:46","slug":"empezando-con-codeigniter","status":"publish","type":"post","link":"https:\/\/luismaseda.com\/wp\/?p=187","title":{"rendered":"Empezando con CodeIgniter"},"content":{"rendered":"<p><strong>Pero \u00bfNo estaba trabajando en la nueva web de Ajedrez en Madrid?<\/strong><\/p>\n<p>Bueno, la verdad es que actualmente tengo demasiadas cosas en la cabeza y es necesario poner un poco de orden en todas ellas si no quiero que esto termine en un caos.<\/p>\n<p>Tengo en mente el cambio de servidor, eso implica migrar toda la web de <a title=\"Ajedrez en Madrid\" href=\"http:\/\/www.ajedrezenmadrid.com\/\" target=\"_blank\" rel=\"noopener\">Ajedrez en Madrid<\/a> a <strong>PHP<\/strong>, lo que significa que tengo que aprender a utilizar este lenguaje de programaci\u00f3n.<\/p>\n<p>Tambi\u00e9n hay que mejorar el dise\u00f1o de la p\u00e1gina y la programaci\u00f3n del sitio, en este sentido de nuevo interviene el saber manejar el <strong>PHP<\/strong>, pero adem\u00e1s hay que a\u00f1adir el conocimiento de <strong>HTML5<\/strong>, el <strong>CSS3<\/strong> y el <strong>Javascript<\/strong>. As\u00ed que me tengo que reciclar en profundidad porque, aunque s\u00e9 algo de HTML y CSS, el Javascript que conozco es de \u00ab<em>andar por casa<\/em>\u00bb y el <strong>ASP<\/strong> ya no me va a servir de mucho en esta aventura.<\/p>\n<p>Y por si no fuera suficiente con toda esta ensalada de siglas, adem\u00e1s entra en escena mi obsesi\u00f3n por hacer las cosas bien.<br \/>\n<style type=\"text\/css\">.scp_box_550{width:550px;}<\/style><div class=\"box_container scp_after\" style=\"width:570px\"><div class=\"scp scp_box scp_box_550 scp_box_blue  drop-shadow drop-shadow lifted \"><\/p>\n<p style=\"text-align: center;\">Si tienes que hacer una cosa \u00bfpor qu\u00e9 no hacerla lo mejor posible?<\/p>\n<p><\/div><\/div><\/p>\n<p><strong>\u00bfY eso qu\u00e9 significa?<\/strong><\/p>\n<p>Pues significa que si quiero combinar todas estas cosas lo tengo que hacer de una forma ordenada y organizada, no de cualquier manera. Y ah\u00ed entran en escena las herramientas de desarrollo de aplicaciones, o <a title=\"Frameworks\" href=\"http:\/\/es.wikipedia.org\/wiki\/Framework\" target=\"_blank\" rel=\"noopener\">frameworks<\/a>. Estas herramientas tienen como objetivo ayudar al programador a realizar sus aplicaciones en un entorno \u00abcontrolado\u00bb y con una metodolog\u00eda espec\u00edfica que proporciona un resultado final m\u00e1s organizado desde el punto de vista del desarrollador y m\u00e1s eficaz para el usuario.<\/p>\n<p><strong>Pero frameworks hay unos cuantos \u00bfCual elegir?<\/strong><\/p>\n<p>Un amigo m\u00edo se decant\u00f3 por el <strong>Symphony<\/strong>. Tardo alg\u00fan tiempo en aprender a utilizarlo, pero como es un gran programador, cuando consigui\u00f3 dominarlo las aplicaciones le empezaron a salir como churros, incluso las m\u00e1s complejas. Yo estuve valorando esta opci\u00f3n, por un lado ten\u00eda la ventaja del soporte personal de mi amigo, pero me pareci\u00f3 que para el uso que yo quer\u00eda dar a mi proyecto era como \u00ab<em>matar moscas a ca\u00f1onazos<\/em>\u00ab, y si adem\u00e1s a\u00f1adimos que la curva de aprendizaje es lenta, especialmente para alguien como yo con un coeficiente intelectual de lo m\u00e1s normalito, lo tuve que descartar y pensar en otras soluciones.<\/p>\n<p>As\u00ed que empec\u00e9 a buscar entornos de trabajo ligeros, con curva de aprendizaje r\u00e1pida y que no dieran muchos problemas en el lado del servidor. \u00c9sto \u00faltimo es un factor importante porque no es lo mismo trabajar con el localhost de tu ordenador que trabajar con un servidor de pago, ya que \u00e9stos tienen normalmente sus peculiaridades propias que te pueden permitir unos hacer ciertas cosas y otros no, y una de las razones por las que quiero redise\u00f1ar la web de Ajedrez en Madrid es que, si una vez instalada en un servidor PHP, la tengo que migrar a otro servidor, no tenga problemas en el lado de los servidores.<\/p>\n<p>Despu\u00e9s de mucho analizar art\u00edculos y comentarios en la web me qued\u00e9 con dos candidatos: <strong>Laravel 4<\/strong> y <strong>CodeIgniter<\/strong>.<\/p>\n<p>Los dos son ligeros y su aprendizaje es m\u00e1s asumible que el de los otros framewroks.<\/p>\n<p>Seg\u00fan algunos expertos <strong>Laravel 4<\/strong> es en la actualidad mejor producto que <strong>CodeIgniter<\/strong>. Sin embargo a la hora de trabajar con ellos parece ser mucho m\u00e1s sencillo de instalar en el servidor el <strong>CodeIgniter<\/strong>, adem\u00e1s de algunas otras ventajas que comentar\u00e9 m\u00e1s adelante.<\/p>\n<hr \/>\n<style type=\"text\/css\">.scp_box_600{width:600px;}<\/style><div class=\"box_container scp_after\" style=\"width:620px\"><div class=\"scp scp_box scp_box_600 scp_box_yellow  drop-shadow Normal \"><\/p>\n<p style=\"text-align: center;\"><strong>CodeIgniter es un entorno de trabajo para el desarrollo de p\u00e1ginas web din\u00e1micas en PHP que facilita el desarrollo de proyectos ecritos en este lenguaje.<\/strong><\/p>\n<p><\/div><\/div>\n<p><strong>CodeIgniter<\/strong> es un framework escrito en <strong>PHP<\/strong> que se caracteriza por su bajo impacto en el servidor y el elevado n\u00famero de librer\u00edas que incluye para trabajar con distintos objetos: calendario, bases de datos, correo electr\u00f3nico, manipulaci\u00f3n de im\u00e1genes, FTP, lenguaje, tablas, sesiones, compresi\u00f3n ZIP, etc\u00e9tera.<\/p>\n<p>A diferencia de otros frameworks, <strong>CodeIgniter<\/strong> cuenta con una documentaci\u00f3n excelente que permite conocer todos los secretos de este entorno de trabajo. La cantidad de clases definidas por defecto, unido a su interfaz clara y facilidad de acceso ha hecho que <strong>CodeIgniter<\/strong> sea avalado incluso por <strong>Rasmus Lerdorf<\/strong>, creador del lenguaje <strong>PHP<\/strong>.<\/p>\n<p><strong>Codeigniter<\/strong> est\u00e1 basado en el sistema <strong>MVC<\/strong> (Modelo Vista Controlador &#8211; Model View Controller) para el desarrollo de aplicaciones web. Este sistema permite a los programadores Web mejorar la forma de trabajar y hacerlo a mayor velocidad.<\/p>\n<p><strong>\u00bfQu\u00e9 es MVC?<\/strong><\/p>\n<p>El Modelo Vista Controlador (<a title=\"MVC\" href=\"http:\/\/es.wikipedia.org\/wiki\/Modelo%E2%80%93vista%E2%80%93controlador\" target=\"_blank\" rel=\"noopener\"><strong>MVC<\/strong><\/a>) es un estilo de programaci\u00f3n en el que la aplicaci\u00f3n est\u00e1 dividida en 3 capas:<\/p>\n<ul>\n<li><strong>Modelo<\/strong> (Model): Es d\u00f3nde se procesan y obtienen los datos, la conexi\u00f3n con la base de datos. El Modelo representa una base de datos, tabla \u00f3 registro, as\u00ed como sus relaciones con otras tablas \u00f3 registros. Los Modelos contienen las reglas para las validaci\u00f3n de datos. Estas reglas son aplicadas cuando en el Modelo se insertan o actualizan datos.<\/li>\n<li><strong>Vista<\/strong> (View): Presenta los datos en pantalla, es donde va el c\u00f3digo HTML que ver\u00e1 el usuario. Son archivos HTML con c\u00f3digo PHP incluido<\/li>\n<li><strong>Controlador<\/strong> (Controller): Se encarga de obtener datos de un Modelo, procesalos, y pasarlos a la vista. Los Controladores manejan las peticiones del servidor. Toman las entradas del usuario (URL y datos de POST), aplican la logica de negocios, utilizan los Modelos para leer y escribir en la base de datos y otras rutas, y mandan la salida apropiada de datos junto con los archivos de Vistas<\/li>\n<\/ul>\n<p><a href=\"http:\/\/luismaseda.com\/wp\/wp-content\/uploads\/2014\/08\/MVC.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-237 size-full\" src=\"http:\/\/luismaseda.com\/wp\/wp-content\/uploads\/2014\/08\/MVC.jpg\" alt=\"MVC\" width=\"500\" height=\"478\" srcset=\"https:\/\/luismaseda.com\/wp\/wp-content\/uploads\/2014\/08\/MVC.jpg 500w, https:\/\/luismaseda.com\/wp\/wp-content\/uploads\/2014\/08\/MVC-300x286.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<style type=\"text\/css\">.scp_box_600{width:600px;}<\/style><div class=\"box_container scp_after\" style=\"width:620px\"><div class=\"scp scp_box scp_box_600 scp_box_black  drop-shadow drop-shadow curved curved-hz-1 \"><\/p>\n<p style=\"text-align: center;\">CodeIgniter est\u00e1 pensado para gente que tiene un dominio, al menos medio, del lenguaje de programaci\u00f3n PHP. Hay que conocer los fundamentos b\u00e1sicos de PHP para empezar a trabajar de forma eficiente con este entorno de trabajo.<\/p>\n<p><\/div><\/div>\n<p><strong>Ventajas de utilizar CodeIgniter<\/strong><\/p>\n<ul>\n<li>Las p\u00e1ginas se procesan m\u00e1s rapido, el n\u00facleo de <strong>CodeIgniter<\/strong> es bastante ligero.<\/li>\n<li>Es sencillo de instalar, basta con subir los archivos al servidor mediante ftp y modificar algunos archivos de configuraci\u00f3n para definir el acceso a la base de datos.<\/li>\n<li>Reutilizaci\u00f3n de c\u00f3digo, desarrollo \u00e1gil.<\/li>\n<li>Existe abundante documentaci\u00f3n en la red.<\/li>\n<li>Facilidad de edici\u00f3n del c\u00f3digo ya creado.<\/li>\n<li>Facilidad para crear nuevos m\u00f3dulos, p\u00e1ginas o funcionalidades.<\/li>\n<li>Acceso a librer\u00edas p\u00fablicas y clases. Entre otras, hay librer\u00edas para el login, paginador, calendarios, fechas, etc.<\/li>\n<li>Estandarizaci\u00f3n del c\u00f3digo. Fundamental cuando hay que tocar c\u00f3digo hecho por otra persona o cuando trabaja m\u00e1s de una persona en un mismo proyecto.<\/li>\n<li><strong>URLs<\/strong> amigables con <strong>SEO<\/strong> &#8211; (Optimizaci\u00f3n en motores de b\u00fasqueda). Hoy en d\u00eda nadie duda de la importancia del posicionamiento web.<\/li>\n<li>Separaci\u00f3n de la l\u00f3gica y arquitectura de la web, el <a title=\"MVC\" href=\"http:\/\/es.wikipedia.org\/wiki\/Modelo%E2%80%93vista%E2%80%93controlador\" target=\"_blank\" rel=\"noopener\"><strong>MVC<\/strong><\/a>.<\/li>\n<li><strong>CodeIgniter<\/strong> es bastante menos r\u00edgido que otros frameworks. Define una manera de trabajar, pero podemos seguirla o no (esto puede convertirse en un inconveniente tambi\u00e9n)<\/li>\n<li>Cualquier servidor que soporte <strong>PHP+MySQL<\/strong> sirve para <strong>CodeIgniter<\/strong>.<\/li>\n<li><strong>CodeIgniter<\/strong> se encuentra bajo una licencia open source, es c\u00f3digo libre.<\/li>\n<li><strong>CodeIgniter<\/strong> usa una versi\u00f3n modificada del Patr\u00f3n de Base de Datos (<a title=\"Active record pattern\" href=\"http:\/\/en.wikipedia.org\/wiki\/Active_record_pattern\">Active Record<\/a>). Este patr\u00f3n permite obtener, insertar y actualizar informaci\u00f3n en la base de datos con m\u00ednima codificaci\u00f3n (<a title=\"El patr\u00f3n active record en PHP\" href=\"http:\/\/www.imaginanet.com\/blog\/el-patron-active-record-en-php.html\" target=\"_blank\" rel=\"noopener\">El patr\u00f3n active record en PHP<\/a> \/ <a title=\"Accesos a base de datos: Patr\u00f3n ActiveRecord\" href=\"http:\/\/mario-chavez.blogspot.com.es\/2008\/09\/accesos-base-de-datos-patrn.html\" target=\"_blank\" rel=\"noopener\">Accesos a base de datos: Patr\u00f3n ActiveRecord<\/a>).<\/li>\n<li>Permite queries m\u00e1s seguras, ya que los valores son escapados autom\u00e1ticamente por el sistema.<\/li>\n<\/ul>\n<p>Evidentemente todas estas definiciones las he tomado de las muchas p\u00e1ginas que he visitado para documentarme para poder tomar una decisi\u00f3n sobre qu\u00e9 camino seguir, ya que yo no dispongo de momento de los conocimientos suficientes para poder emitir estas valoraciones.<\/p>\n<style type=\"text\/css\">.scp_box_600{width:600px;}<\/style><div class=\"box_container scp_left\" style=\"width:620px\"><div class=\"scp scp_box scp_box_600 scp_box_blue  drop-shadow drop-shadow lifted \"><\/p>\n<p style=\"text-align: center;\">Aprovecho para agradecer a tanta gente que comparte sus conocimientos y experiencias de forma altruista y que tanto ayudan a los que empiezan.<\/p>\n<p><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Pero \u00bfNo estaba trabajando en la nueva web de Ajedrez en Madrid? Bueno, la verdad es que actualmente tengo demasiadas cosas en la cabeza y es necesario poner un poco de orden en todas ellas si no quiero que esto &hellip; <a href=\"https:\/\/luismaseda.com\/wp\/?p=187\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41,3],"tags":[23,26,29,6,5,8,7,25,38,28,27,4,31,33,34,32,30],"class_list":["post-187","post","type-post","status-publish","format-standard","hentry","category-codeigniter","category-desarrollo-web","tag-asp","tag-codeigniter","tag-controlador","tag-css3","tag-framework","tag-html5","tag-javascript","tag-laravel-4","tag-localhost","tag-modelo","tag-mvc","tag-php-2","tag-rasmus-lerdorf","tag-seo","tag-servidor","tag-url","tag-vista"],"_links":{"self":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=187"}],"version-history":[{"count":73,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/187\/revisions"}],"predecessor-version":[{"id":747,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/187\/revisions\/747"}],"wp:attachment":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}