Categoría : PHP

CodeIgniter, primeros pasos con este framework PHP

Por sugerencia de LordTaran (que hace poco se ha decidido a incursionar en CodeIgniter) voy a escribir algo de CI. Hoy cuento cómo y porqué uso este framework PHP.

De CakePHP a CodeIgniter

Con CakePHP fue mi primer contacto con esto de los frameworks, y la verdad es que ¡me encantó! Después de un par de años programando en PHP "a mano", de repente poder hacer las cosas de forma mucho más fácil y rápida fue un gran avance para mi, pude hacer aplicaciones que antes me hubiera tomado muchísimo más tiempo y tampoco hubieran quedado tan bien.
Pero no todo fue "maravilloso", CakePHP exige aprender a hacer las cosas a su manera y es casi otro lenguaje. Sumado eso con el hecho de no tener tanta experiencia con PHP hizo que perdiera muchísimo tiempo para hacer algunas cosas a la manera de CakePHP.
Un día veo este comentario de Rasmus Lerdorf (creador de PHP) que hablaba sobre los frameworks PHP (no le gustan) y de CodeIgniter como el más ligero y con mejor rendimiento. Así que como tantos otros programas, librerías, efectos y plug-ins que pruebo continuamente, decidí probar este framework.
Lo primero que hice fue hacer los ejemplos de los video-tutoriales, que me gustaron.

CakePHP vs CodeIgniter

En esos días había puesto en marcha la primer versión de Retro Invaders (mi proyecto de planet de blogs de retro informática), así que para hacer algo concreto con CI decidí convertir el código del Retro Invaders hecho con CakePHP, fue más fácil de lo que pensaba aunque a base de "chapucear" un poco (sobre todo por desconocimiento de CI).

Rasmus Lerdorf - PHP - CakePHP - CodeIgniter

Al final logré tener dos aplicaciones casi gemelas, una con CI y otra con CakePHP 1.1xxx. Y no resistí hacer comparaciones de rendimiento y velocidad de ambas versiones, sobre el mismo servidor y con los mismos datos. El resultado fue que CI era el doble o triple más rápido que CakePHP, tampoco me tomo estas pruebas muy a pecho, porque seguro que en ambos casos se podría optimizar de diferentes maneras.
A partir de allí fui haciendo cada vez más cosas con CI y cada vez sintiéndome más y más cómodo con estas librerías. Por momentos extraño ciertas facilidades que da CakePHP, pero de a poco fui creando mi flujo de trabajo y ya llevo varios proyectos hechos con CodeIgniter, por lo que puedo decir que ahora es mi "framework php oficial".

CodeIngiter 1.7.1

De paso aprovecho para anunciar que se ha publicado una nueva versión: CodeIgniter 1.7.1 Released
Básicamente: muchas nuevas funciones, mejoras, bugs solucionados y una actualización de seguridad para la validación de formularios. Listado completo de esta actualización: Change Log Version 1.7.1

Nueva versión: CodeIgniter 1.7

CodeIgniter logoAyer fue liberada la versión 1.7 de CodeIgniter, el framework PHP que estoy usando CodeIgniter para mi blog planet de retro informática: Retro Invaders.

Algunas características de esta versión:

  • Nuevo Form Validation Class, simplifica y mejora el anterior.
  • Actualización de Sessions class, permitiendo grabar en base de datos.
  • Opción max_filename a File Upload Class.
  • Modificación de Pagination.
  • Mejoras en Active Record class, cache en las funciones "update" y "delete".
  • Soporte para MySQL, MySQLi, y MS SQL.
  • Mejoras en el Form helper.
  • Mejoras en el URL helper, agregado current_url() y uri_segments().
  • Agregado meta() function al HTML helper.
  • Agregada limpieza en xss_clean() para HTML deprecado.
  • Y muchas cosas más.

Instrucciones para actualizar a CodeIgniter 1.7:

Bake Planet, un planet de blogs creado con CakePHP

CakePHPHace unos días, escribiendo en el foro de Computer Emuzone, se me ocurrió instalar un "planet de blogs" para los blogs de retro informática. Lo primero que hice fue buscar algo ya hecho para no reinventar la rueda, como estoy inscripto al Planet Stratos miré cual usaban (Planet Planet), pero está hecho con Python y yo no sé nada de Python... fue entonces cuando me picó el gusanito de "hacerlo yo mismo"... :D

El resultado es este: Retro invaders, blogs de retro informática, todavía hay algunos errores de charset, pero en general está totalmente operativa.
Para leer las semillas RSS he usado la librería SimplePie, que facilita muchísimo la lectura de RSS, haciendo la parte más pesada.
Apenas tenga una versión un poco mas depurada publicaré los códigos fuentes del proyecto con licencia GPL (o alguna de código libre).

Actualizándose a CakePHP 1.2

CakePHP 1.2 Framework PHPFinalmente me he decidido a dar el salto a la nueva versión de CakePHP.

El primer contacto fue duro porque:
- Estoy muy acostumbrado a la v1.1.
- Tengo muchas "mini-librerías" que fui creando a medida que aprendía a usar CakePHP.

Ahora me queda por delante aprender a usar todas las nuevas posibilidades, dejar de lado mis "mini-librerías" ya que CakePHP 1.2 ofrece de base cosas como gestión de usuarios, permisos de usuarios, gestión de lenguajes, paginación, etc.

Para ir aprendiendo comencé con un proyecto simple: convertir mi (muy) antigua página web de Manual de Crianza de Caracoles a CakePHP, agregarle un sistema de noticias y artículos de caracoles, recetas de cocina, etc. Ya avisaré cuando haga la actualización.

Framework PHP: CakePHP

Finalmente voy a hablar un poco de mis comienzos con este "framework" para PHP.

Empecé a programar PHP/MySQL hace algo más de 2 años, al principio todo era nuevo y el uso que le daba al lenguaje era usando los comandos básicos del lenguaje, pero a medida que iba aprendiendo y haciendo proyectos mas grandes y complicados veía que necesitaba "algo más"... Desde una manera de organizar los archivos, carpetas hasta una manera estandar de acceder a las bases de datos y mostrar la información.

Cuando uno apenas domina un lenguaje es impensable utilizar librerías y funciones que dan por sentado una base en el manejo del lenguaje,... pero una vez tenemos esas bases, ya podemos "aventurarnos" a las cosas mas complicadas.

CakePHPAsí que llegado a este punto en donde las bases de PHP ya las tenía mas o menos asumidas y viendo que necesitaba urgentemente un orden y sistema de trabajo fue cuando me atreví a ver de que se trataba esto del CakePHP.

En estos días se cumple mas o menos el año desde ese primer acercamiento a CakePHP, y no puedo estar más conforme con la elección :)

CakePHP es Código Abierto, o sea que somos libres de utilizarlo sin pagar, obviamente si podemos hacer donaciones para que ese proyecto siga creciendo y mejorando todos saldremos beneficiados.

Aprendiendo y organizando proyectos PHP

Hace un año y medio mas o menos que empecé a usar PHP para el desarrollo de páginas web. Aunque el lenguaje realmente no me fue difícil de aprender, lo más problemático fue encontrar un método de trabajo y forma de organizar los archivos y carpetas (código, estilos, imágenes, etc).
Actualmente estoy usando el framework CakePHP, pero antes de usar este framework profesional pasé por varias etapas de investigación y experimentación para encontrar un método de trabajo cómodo y potente.
A continuación cuento un poco cómo era mi forma de trabajo antes de conocer CakePHP:

Modelo Vista Controlador

Desde el primer momento me atrajo la lógica MVC (Modelo Vista Controlador), que aunque no la comprendía en profundidad, sí veía que era una manera muy ordenada de organizar los archivos de un proyecto.

El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el controlador es el Sistema de Gestión de Base de Datos y el modelo es el modelo de datos

Debido a ser novato usando PHP y POO sólo logré implementar "a medias" el MVC, esto quiere decir que no apliqué el Modelo y hay algunas "zonas grises" entre Controlador y Vista.

  • Solución para el Modelo: ninguna, no llegué a comprender este punto.
  • Solución para el Controlador: la lógica de cada pantalla en archivos PHP independientes.
  • Solución para la Vista: para separar la presentación de los datos utilicé la Clase MGTheme de Marioly.

Organización de los archivos de una página web

La manera en que organicé mis páginas web era la siguiente:

  • /clases: accesos a las bases de datos, control del template de pantalla (MGTheme.php), etc.
  • /control: el código que controla cada una de las pantallas de la página web (catalogo.php, inicio.php, etc.)
  • /config: configuracion de las bd, key de googlemap, textos en los distintos idiomas, etc.
  • /descargas: vcards, archivos pdf, etc.
  • /inc: (includes) segmentos de códigos, funciones, etc.
  • /img: las imágenes de la web que forman parte del contenido, no del aspecto visual. Ejemplo: fotos de la empresa, productos, etc.
  • /flash
  • /jscripts
  • /vista: plantillas (.tpl) e imágenes (menús, marcos, fondos).
  • index.php
  • favicon.ico

Mi próximo artículo será sobre el framework CakePHP, donde contaré mi experiencia con este excelente framework (¿librería?) PHP.

Eclipse fácil: distribución EasyEclipse

EasyEclipseLuego de intentar varias veces utilizar el entorno de programación Eclipse, ha sido gracias a esta distribución EasyEclipse que me he decidido finalmente a usarlo de forma activa.

EasyEclipse Distribution consiste en varios paquetes con plugins instalados y listos para el desarrollo de aplicaciones HTML, PHP, Java, LAMP, Python, etc.

 
#