Open Source

[Kohana - PHP] Explotando el potencial del ORM kohana

Kohana PHP Framework, trae un ORM (ver más sobre ORM’s), sencillo pero poderoso, sencillo por que es muy fácil de usar y poderoso por que podemos hacer casi cualquier cosa con dicho ORM.

El único punto en contra es que solo tiene soporte para MySQL, pero como la mayoría usamos la combinación LAMP o mejor  MySQL+ PHP, creo que vale la pena estudiarlo a fondo.

Para usarlo recordemos que solo basta con descomentar el modulo en el bootstrap y mover el archivo de configuración database.php a nuestra configuración de la aplicación.

Ahora bien vamos a describir como usar el ORM y como usar la mayoría de sus características.

Haciendo una simple consulta.

Es importante recordar que hay que agregar una clase para manejar cada tabla, aunque esto a veces se puede omitir ayuda mucho tener todo refactorizado ya que mejora la organización del código ya la vez su mantenimiento.

PROBLEMA: Como hacer una consulta de todos los datos de una tabla(‘users’);


//Consulta normal
$sql = 'select * from users';
$results = mysql_query($sql,$conection);
if($results) {
 //Resultados
}

//Consulta ORM

$results = ORM::factory('users')->find_all();
if($results->loaded())
{
 // Resultados
}

Como vemos es muy fácil de usar el orm, ahora veamos otros ejemplos mas avanzados

PROBLEMA: Consultar la tabla mediante un id único

$id = 5; //id unico

//Consulta normal
$sql = 'select * from users where id = '.$id;
$results = mysql_query($sql,$conection);
if($results)
{
 // Resultados
}

//ORM Forma:1
$results = ORM::factory('users',$id)->find();
if($results->loaded())
{
 // Resultados
}

//ORM Forma:2
$results = ORM::factory('users')
 ->where('id','=',$id)
 ->find();
if($results->loaded())
{
 // Resultados
}

Como vemos podemos hay dos formas de hacer la consulta con el ORM, ya se indicándole el id al factory o mediante where, al final es lo mismo, solo que la primero forma sirve para el id únicamente(el nombre del campo debe de ser id por default aunque también se puede modificar).

Algunos de los métodos que podemos usar son los siguientes(no son todos pero tratare de poner los mas importantes)

  • where
  • where_open
  • where_close
  • join
  • on
  • order_by
  • offset
  • limit
  • group_by
  • or_where
  • and_where

Obviamente combinando todos podemos crear consultas complejas, por ejemplo la siguiente.

Leer más

[Javascript] simpleValidate Jquery Plugin

Pues les cuento un preámbulo

Una de las cosas que menos me gusta es estar repitiendo código (recordemos -DRY-) entonces, pues cuando deseaba validar un formulario siempre andaba buscando cual opción era la mejor, y hay muchas opciones y son excelentes en lo que hacen, sin embargo todas tenían un punto débil, por ejemplo que no soportaban ajax, es decir terminaban de validar y se seguían (enviaban el formulario), otros me mandaban mensajes de errores de validación en ciertos colores y en cierto lugar que si bien es correcto, a veces en muchos proyectos no va el estilo o simplemente quieren ponerle un alert o similar.

Bajo ese preámbulo y recordando que siempre quise hacer un validado de formularios con Javascript (hace años hice uno chafita con Javascript).

Entonces pensé por que no hacer uno que fuera muy simple de usar y que no fuera obtrusivo, y así fue como desarrolle simpleValidate que es un plugin el cual como su nombre lo dice solo es un validador de formularios y nada mas.

Les presento a:

simpleValidate – Jquery Plugin

A continuación pongo las características.

  • Fácil de usar
  • Extremadamente Ligero 2kb (minifed)
  • Compatible con Jquery 1.5.2
  • No requiere CSS especial
  • No obtrusivo
  • Posibilidad de inyectar algún tipo de alert especial mediante sus settings
  • Completamente personalizable
  • Soporta expresiones regulares
  • Y valida checkboxes

Su uso es muy simple, solo necesitamos de Jquery y del plugin

 <script src="jquery.1.5.2.min.js" type="text/javascript"></script>
 <script src="simpleValidate.1.6.min.js" type="text/javascript"></script>

Y ejecutamos el plugin donde indicamos el id del Formulario en cuestión


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <script src="jquery.1.5.2.min.js" type="text/javascript"></script>
 <script src="simpleValidate.1.6.min.js" type="text/javascript"></script>
 <script type="text/javascript">
 $(document).ready(function(){
    $("#testForm").simpleValidate();
 });

 </script>
 </head>
 <body>
 <form action="try.php" method="post" id="testForm">
 <label>Name</label>
 <input type="text" name="name" title="valid[Ingrese un nombre valido]" /><hr />
 <label>Ingrese una cantidad valida (tipo numero.decimal(2 digitos))</label>
 <input type="text" name="cantidad" title="valid[regex,Por favor ingrese un numero con o sin decimales únicamente]" data="^([0-9]+\.?[0-9]{0,2})$" /><hr />
 <label>Required</label><input type="checkbox"  name="condiciones" value="Required" title="valid[Debes de aceptar los terminos y condiciones]"/>
 <input type="submit" value="Guardar datos"/>
 </form>
 </body>
</html>

Y con esto ya tenemos funcionando el plugin ahora necesitamos indicarle cuales son los campos a validar lo haremos de la siguiente forma.

En cada input que necesitemos, vamos a agregar lo siguiente en el campo (input) que queramos validar

title=”valid[tipo_de_validacion,{params,}]“

Donde los tipos de validación son los siguientes:

  • valid[required,mensaje de error] ==> Solo verifica que el campo tenga algún valor y el segundo parametro es lo que mostrara cuando no pase la validación
  • valid[email,mensaje de error] => Valida que sea un email valido y si no muestra el mensaje del segundo parametro.
  • valid[zip,mensaje de error] => Valida que sea un código postal valido (5 caracteres numéricos) y si no muestra el mensaje del segundo parámetro.
  • valid[minlength,mensaje de error,numero_minimo] => Valida que el campo contenga un mínimo de caracteres indicado el el ultimo parámetro
  • valid[maxlength,mensaje de error,numero_maximo] => Valida que el campo contenga un máximo de caracteres indicado el el ultimo parámetro
  • valid[regex,mensaje de error] => Este forma de validación necesita un parámetro data dentro del input donde venga especificada la expresión regular a validar y si no pasa lanza el error.
  • valid[ensaje de error] =>Este solo es aplicable a los checkboxes y solo contiene como argumento el error que mostrara cuando el checkbox no este marcado

Leer más

[Ajaxman] Como me fue en el Flisol 2011

Bueno hoy que tengo que dormirme temprano me dio por postear lo de el sábado pasado osea el Flisol 2011.

Aquí va un pequeño resumen de como me fue, la verdad pensaba postearlo antes pero con mi exceso de tiempo y demás pues ya no se pudo bueno aquí vamos.

Se realizo el día 9 de Abril, en toda latinoamerica, en muchas sedes como Universidades,o similares.

Yo me organice y me fui a dar una platica de PHP en la UACM (Universidad Autónoma de la Ciudad de México) campus “Cuautepec” que se ubica en La Gustavo A. Madero de México D.F.

La platica se denomino “Desarrollo de Aplicaciones Web con PHP”, en la cual trate de abordar las ventajas de PHP, y cual es el presente y futuro del desarrollo Web profesional con PHP.

Básicamente aborde los siguientes temas.

  • Importancia de tener presencia en la Web
  • Tener un blog o un sitio Web
  • Por que apostar por las tecnologías Libres
  • Ventajas de tener un Servidor Linux
  • Ventajas de usar Apache Web Server
  • Por que usar PHP
  • Como es la sintaxis de PHP
  • Desventajas de PHP (Codigo Spaghetti)
    • Soluciones
    • Programación Orientada a Objetos
    • Arquitectura MVC
  • Los CMS
  • Los Frameworks y sus ventajas y desventajas
  • Quien usa PHP y por que lo usan (Ventajas, Estabilidad, Potencia)
  • El grupo Programadores PHP

Realmente me hizo falta tiempo para mostrar todas las ventajas de PHP, pero al parecer gusto mucho la platica tuve un par de Feedbacks interesantes.

Me regalaron una playera, un Tux y el gafete decía Firefox (y yo bien feliz) además de que me ofrecieron un reconocimiento los cuales pongo a continuación

Ahora dejo los slides que use para dicha platica, por si alguno quiere ver las ventajas de PHP.

Saludos y seamos más phpheros

Leer más

[Flisol 2011] Platica “Desarrollo de Aplicaciones Web con PHP”

Hola, pues de algunos ajustes ya estamos en un nuevo servidor, el anterior nos funciono muy bien, pero tuvimos que migrar por otras causas (gracias Tirso =) ).

He estado trabajando duro en el proyecto MSK(codename), pero aun faltan algunas cosas, ya compre el server y todo, en breve (léase 1 mes jaja) estaremos lanzado invitaciones para que lo testeen y me digan que les parece.

Ahora bien, pensé en apoyar con algo en alguna sede, y bueno pues ya esta. Se trata de una platica desde básica a avanzada, la cual durara aproximadamente 2 horas.

Tema: Desarrollo de Aplicaciones Web con PHP
Objetivo: Mostrar al capacidad del lenguaje, mostrar la sintaxis básica, y por que es la mejor opción como software para desarrollo de paginas web dinámicas
Duración: 2 Horas (aproximadamente)
Lugar: Universidad Autónoma de la Ciudad de México (UACM) Campus “Cuautepec”
Dirección: Avenida La Corona 320, Colonia Loma la Palma, Delegación Gustavo A. Madero.
Costo: Gratuito

Temas:

  • Internet y la Web
  • La importancia del internet en la vida diaria.
  • Servidores Web
  • LAMP, El Open Source en la red
  • Programando en PHP
  • La programación Orientada a Objetos en PHP
  • Los CMS y Frameworks, como desarrollar mejor y mas rápido
  • El pasado, presente y futuro de PHP

Sera un platica con intención de ser taller, ya que se pretende mostrar todo estos y es opcional que los usuarios programen algo como ejemplo, aunque claro tomemos lo con platica.

Como llegar:

  • En auto te puedes ir por avenida de los Cien Metros, a la altura del Reclusorio Norte. A 20 minutos de Poli Zacatenco.
  • Metro La Raza, sale el RTP que dice “Reclusorio-Charco”, y pasa por las estaciones de metro Autobuses del Norte, Instituto del Petróleo y Politécnico(pasa afuera de la UACM).
  • Metro Indios Verdes, salen RTP y microbuses con la misma leyenda que el anterior(pasa afuera de la UACM).

Mapa:

Esperamos que les guste y ya saben cualquier queja, felicitación, donativos( =) ), me avisan por mi twitter @ajaxman.

Por cierto habra talleres de instalacion de Linux, platicas, asistan y disfrutemos este evento.

Leer más

[Programadores PHP] Datos del Taller de POO con PHP5

Bueno como casi todos ya sabían este sábado 26 de Febrero doy comienzo con el taller de POO en PHP5, el cual se realizara en #Telmexhub, lamentablemente (afortunadamente) los lugares ya se llenaron, solo había 30 lugares.

Las fechas a realizarse son:

  • 26 de febrero 2011 (12:00 pm – 3:00 pm)
  • 5 de Marzo 2011 (12:00 pm – 3:00 pm)
  • 12 de Marzo 2011 (12:00 pm – 4:00 pm/4 hrs)

Es gratuito, si alguno de los asistentes ya registrados no va a ir le pedimos por favor si fuera tan amable de avisarnos por que hay mucha gente que desea ir y ya esta lleno.

Este es le temario que se desarrollara durante el taller.

  • Conceptos OOP
    • Clases
    • Objetos
    • Herencia
    • Polimorfismo
    • Interfaz
    • Encapsulado
  • Clases
  • Métodos
  • Propiedades(Atributos)
  • $this
  • Objetos
  • Herencia (extender una clase)
  • Encapsulado (privado, protegido,publico,final)
  • clases final
  • Método constructor __construct()
  • Método destructor __destruct()
  • Operador de alcance de resolucion :: (Paamayim Nekudotayim)
    • Constantes clase::CONST
    • self:: => mismos metodos y propiedades pero estaticas
    • parent:: =>Metodos y propiedades padres
  • Métodos estáticos
  • Propiedades estáticas
  • Constantes

Se tratara de realizar todo el temario dependiendo del avance general del grupo y del tiempo.

Algunas cosas a considerar son las siguientes.

Leer más

[Kohana - PHP] Lanzamiento de Kohana 3.1 “Merle” y como hacer el upgrade

Pues apenas me vengo enterando de que los desarrolladores de Kohana han liberado el día 7 de Febrero la versión 3.1 del Framework Kohana llamada “merle“.

Pues obviamente hay muchos que queremos tener nuestro Framework actualizado, entonces pues me dispuse a migrar un website de la versión 3.0.9 a la 3.0.x.

Las instrucciones de migrar son fáciles, regularmente se basa en reemplazar el directorio system de nuestra aplicación, pero esta nueva versión incorpora muchos cambios los cuales, hacen la migración un poco mas complicada.

El mismo sitio de kohana nos avisa de los siguientes cambios:


//Versión 3.0.x

$this->request->response = 'foo';

//Versión 3.1
$this->response->body('foo');

//Cambios en la clase Request de propiedades a métodos

//Versión 3.0.x  ===>    Versión 3.1
Request::$controller ==> Request::controller()
Request::$action ==> Request::action()
Request::$directory ==> Request::directory()
Request::$uri ==> Request::uri()

Todos lo puntos son marcados aquí
http://kohanaframework.org/3.1/guide/kohana/upgrading.

Ahora bien, a mi los que mas me interesaron, son importantes y no vienen aqui son los siguientes.

Request


//Versión 3.0.x

Request::instance();

El método estático anterior nos devolvía el singleton de nuestra solicitud con dicho método estático podiamos obtener parámetros y una de las cosas para lo que yo la utilizaba era para la creación de mi Breadcrumb.


//Version 3.1

Request::current();

//o

Request::initial();

Aquí como vemos tenemos dos opciones, y se elimino instance, las dos son iguales salvo por un detalle, si usamos HMVC, initial contendrá la información de la petición inicial, es decir si desde un controlador estamos invocando a un Request::factory(), ese sera inital y el factory invocado sera current cuando estemos programando dentro del factory.

Leer más

[Manual-PHP] Creando un proyecto MVC con Framework Kohana PHP parte II

Bien esta es la continuación al manual de “Creando un proyecto MVC con Framework Kohana PHP parte I“, y ahora veremos un acercamiento más profundo al MVC.

Bien vamos a continuar con el proyecto que teníamos en la parte anterior, y sobre ese mismo trabajaremos, ya teníamos nuestro controlador y nuestro modelo.

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Tienda extends Controller {
/**
 * Controller_Tienda Es el controlador por default recuerden el bootstrap
 * todos los controladores llevan esta sintaxis, Controller_<Nombre_del_controlador>
 *
 *&nbsp; action_index() Es la acción por default (ejemplo http://localhost/tienda/accion)
 *&nbsp; si no se especifica en la url (ejemplo http://localhost/tienda/accion, se usara
 *&nbsp; index por default y la sintaxis es action_<nombre_de_la_accion>
 */
 public function action_index()
 {
 echo "Programando ....";
 }

} // End Tienda

Algo que debemos tener en cuenta en Kohana PHP es que existen dos tipos de controladores padres (parents) de los cuales podemos extender a nuestros controladores con los que trabajemos y eventualmente podemos crear más a nuestro gusto, pero de momento solo veremos los que podemos usar por default en Kohana PHP.

Controlador “Controller”, este es el controlador que usamos en el ejemplo de la parte uno y el cual está arriba, al extender nuestra clase de este controlador hacemos que funcione todo lo necesario para trabajar con Kohana, digamos que es el normal, y lo correcto para mostrar una salida en pantalla es usar la variable publica $this->request->response, y a esta se le asigna lo que necesitemos mostrar, lo cual regularmente debe de ser y será una vista.

Controlador “Controller_Template” este al igual que el anterior, permite que las clases que extiendan de el, tengan toda la funcionalidad de una clase controladora de Kohana, la grand diferencia, con la anterior, es que esta clase necesita una vista por default, la cual será rendereada o interpretada/mostrada automáticamente.

Ahora veamos las vistas para explicar los puntos anteriores.

Una vista es un archivo php(se puede llegar a usar plantillas Smarty mediante un modulo), alojado en ruta_de_instalacion/application/views el cual regularmente es un archivo que contiene un poco de código PHP y código HTML el cual nos permite mostrar nuestra aplicación Web.

Para poder cargar una vista es necesario usar el método View::factory($vista_name);, donde $vista_name es el nombre del archivo sin la extensión.

Hagamos un ejemplo usando los métodos anteriores para ello usaremos este código HTML casi vacío.

Nombre: PATH_INSTALACION/application/views/template.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Vista para Kohana PHP</title>
</head>
<body>
 <p>Hola esta es una vista para Kohana PHP</p>
</body>
</html>

Leer más

Historico de entradas

febrero 2012
L M X J V S D
« ene    
 12345
6789101112
13141516171819
20212223242526
272829  

Ajaxman

Mi nombre es Javier, soy desarrollador web con especialización en PHP (avanzado), HTML, CSS y Javascript(Medio).

Me considero evangelizador de Kohana Framework, Mozilla Firefox y GNU/Linux Debian.

Estoy casado, y tengo dos hermosos hijos.

Todos los contenidos a menos que se exprese lo contrario estan bajo licencia Creative Commons.

Enlazanos!!

hit counters online counter