diciembre 10, 2013

Usar la instancia de Codeigniter desde nuestras propias clases automáticamente

Un inconveniente que tiene CodeIgniter es que no se puede acceder de manera tradicional a los recursos del framework desde nuestras propias clases, tal como lo haríamos desde un controlador o bien un modelo.

Generalmente tenemos que hacer algo como: $CI = &get_instance(); para después usar ese objeto en la forma: $CI->db->get(); lo cual pues no se ve tan bien, como cuando hacemos las llamadas al puro estilo de CodeIgniter.

Para resolver esto (si es que contamos con la versión de PHP 5.0 o superior),  podemos utilizar el método mágico __get() para poder incluir las funcionalidades de la instancia de CodeIgniter en nuestra propia clase de manera transparente, del siguiente modo:

Solo hay que agregar este método en nuestra clase y ya podremos hacer llamadas a las diferentes funciones de CodeIgniter de manera tradicional, como $this->load->view() ó $this->db->get()

Los métodos mágicos en PHP son una gran herramienta y te invito a que los descubras y te enteres de la clase de cosas que pueden hacer por ti... por algo son "mágicos" =:-)

septiembre 18, 2012

Redirigir por JQuery usando el método POST

Me hice esta función de Javascript que usa JQuery para resolverme yo mismo un problema y espero que le sea de utilidad a alguien mas.

Es muy común necesitar redirigir al usuario por javascript desde nuestro sitio web a otra página, lo cual es muy simple de hacer simplemente cambiando la propiedad window.location.href o bien abriendo una nueva pestaña en el navegador con la función window.open()

El problema está en si lo que se desea es redirigir el navegador a otra dirección web y además incluir en esa solicitud variables que viajen por el método POST, esto suele ser necesario cuando se consume alguna API, se desea autenticar automáticamente al usuario en algún sitio enviando sus credenciales, se desea consumir un servicio REST "especial", o simplemente enviar a una nueva página información que no sea visible en la dirección URL. Esta al parecer es una duda muy común en el sitio de stackoverflow y a menudo se confunde el problema con una solicitud AJAX (lo cual es muy simple de resolver usando JQuery),  pero en este caso se requiere redirigir al usuario a otra página, no cargar contenido en segundo plano.

La función redirect_by_post(purl, pparameters, in_new_tab)  recibe 3 parámetros muy sencillos, el primero es una cadena con la dirección url de la página a abrir, el segundo es un objeto javascript con las variables a enviar, y el tercero es un valor booleano que de ser verdadero indica que se desea abrir la página en una nueva pestaña del navegador y en caso de ser un valor falso se abre en la misma pestaña activa.

 Se puede ver un ejemplo de su uso aquí:
 

La función simplemente crea un formulario dentro del cuerpo de la página; lo inicializa para que trabaje tal como se le ha indicado a la función que debe comportarse, y una vez enviado el formulario lo elimina del DOM, esto permite trabajar dinámicamente el número de variables a enviar y funciona bien con los principales navegadores.

Si le hacen alguna mejora a esta función pueden postearla en el repositorio de GitHub donde está alojada.

Un saludo y espero les sirva  =:-)

mayo 04, 2012

Como ha cambiado la educación en la era digital

El día de ayer veía la transmisión semanal del sitio de mejorando.la, y en la parte final de este show se hablaba de como ha cambiado la educación en los tiempos modernos, con la disposición de sitios como la wikipedia favoreciendo la formación de los estudiantes de ahora.

Esto me recuerda una vieja anécdota de cuando estudiaba el sexto grado de primaria en un modesto municipio del estado de Chiapas:

Estando un día en clase, leíamos conjuntamente y en voz alta por turnos, una lección del libro de lecturas proporcionado por la secretaría de educación pública para los estudiantes de sexto grado.

Esta lección trataba de un escrito que hacía un niño que decía vivir en un lugar llamado "Kenya"; y ahí se suscitó el primer debate, ya que el maestro, no sabía a ciencia cierta si dicha palabra se debía leer como "Ken-ia" o como "Ken-lla"... el caso es que en un momento de la clase parecíamos resignados a quedarnos con esa interrogante y bueno, podíamos vivir con esa duda de cualquier modo, (ninguno de mis compañeros planeaba viajar para ese país en esos tiempos).

Pero más adelante en esa misma lectura el niño relataba que vivía "a la sombra del kilimanjaro", y pues no faltó la inocente alma que preguntó:

Maestro, ¿Qué es el Kilimanjaro?
 El maestro peló tamaños ojotes y tuvo que admitir que no tenía ni la más pálida idea de que demonios era eso... no sabía si era un árbol o edificio, o algún otro artefacto que diera sombra; así que como es costumbre de los maestros, pues se quedó de tarea investigar cada quien por su cuenta que era el famoso Kilimanjaro;... en aquellos tiempos mi único material de consulta era un muy humilde diccionario donde no figuraba la palabreja, así que tuve que ir a la biblioteca municipal y hurgar entre montones de libros sin ningún éxito; incluso organizamos una excursión colectiva a los diferentes acervos académicos de nuestro pueblo, pero en ninguno de ellos había una referencia clara sobre que era lo que significaba esa palabreja, y al terminar el año escolar aún no habíamos aclarado esa duda.

Pero hoy en día...

El día de hoy en cuestión de minutos se pueden responder inquietudes como esta y con un esfuerzo mínimo, con solo poner en el buscador de Google la palabreja se pueden encontrar miles de referencias, fotografías, videos, visitas virtuales al lugar, etc!, hoy un niño de la edad que yo tenía en aquel entonces, puede resolver en unos segundos la duda que a mi me aquejó por varios meses; y pasar a lo que sigue y preguntarse cosas aún más complejas como "¿Como se llamaba la mama de Rasputín?" y contestarse el solo en unos minutos.

Para mí que me ha tocado vivir esa transición y esta revolución de la información, de verdad que no dejo de sorprenderme día con día...

¿Alguien más tiene una anécdota parecida?

abril 24, 2012

Estaré en la CONISOFT 2012

Del miércoles 25 al sábado 28 de abril, estaré en Guadalajara, Jalisco en el evento de Conisoft 2012.

Estaré presentando un proyecto personal muy, muy interesante que espero que se llegue a convertir en algo realmente grande.

Por si alguien quiere pasar a saludar, platicar, o enterarse de este proyecto, por allá nos vemos!!

abril 03, 2012

Mis proyectos en GitHub

Estoy migrando algunos proyectos nuevos y no tan nuevos a la plataforma de GitHub para compartirlos con la comunidad de desarrolladores, para que vean de que clase de proyectos estoy compartiendo aquí tienen un pantallazo de uno de ellos:


Este proyecto lo encuentran en esta dirección: http://cgarciagl.github.com/Delphi-FPS/

Algunos proyectos como este mostrado aquí, son códigos que desarrollé en mis ratos de ocio, para aprender algunas nuevas técnicas de programación y para poner a prueba algunas teorías; pero bien podrían servirle a alguien como base para iniciar algún proyecto más elaborado.


Poco a poco iré agregando más proyectos de los que espero tener retronalimentación y espero que les hagan Forks y participen aquellos a los que les llegue a interesar algún tema en particular...

Mi cuenta de GitHub es: https://github.com/cgarciagl y ahí podrán encontrar los proyectos que les comparto, principalmente encontrarán proyectos desarrollados en Delphi y de PHP y Javascript; particularmente para los frameworks: CodeIgniter y JQuery...

Saludos