ORM en PHP con POG

Octubre 3, 2009

<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
include “objects/class.usuario.php”;
include “objects/class.database.php”;
include “configuration.php”;
$us= new Usuario();
$us->usuario=”santiagozky”;
$us->password=”secreto”;
$us->nombre=”‘; drop table usuario;–”;
if($us->Save()){
echo “genial “;
} else{ “owww “;}
$us2= new Usuario();
$us2->nombre=”santi”;
$us2->Get($us->usuarioId);
echo “$us2->nombre”;
?>

Wow, demasiados acrónimos en el título…

Estos últimos años básicamente me he dedicado a desarrollar todo lo que hago en java. El problema es que he dejado de lado muchas alternativas, incluso aquellas sumamente usadas como PHP.

Para solucionar esta situación decidí hacer unos cuantos experimentos en PHP. Nada muy elegante, solo algunas cosas útiles y pequeñas como validaciones, conexiones a bases de datos, etc. Este fin de semana me dió por investigar sobre soluciones ORM para php.

Sin duda hay bastantes. Sin embargo no he encontrado ninguna que ofresca algo tan completo como hibernate o el JPA. La mayoría requiere de correr procesos que autogeneran tus clases en base a un schema o algun otro tipo de configuración.

Lo mejorcito que he probado (que no ha sido demasiado debo decir) fue POG (PHP Object Generator) que es un sistema que te permite crear tus clases con sus metodos CRUD (eso es ‘create’,'retrieve’,'update’ y ‘delete’) para manejarlas.

Pueden probar el sistema en su página. La verdad fue facilísimo hecharlo a andar. En mi caso cree una clase Usuario con unos cuantos atributos, después solo hay que configurar un archivo con los datos de tu base de datos y entrar al directorio setup desde el navegador.

Una vez que se instaló la base cree un pequeño script para ver que funcionara. Nada del otro mundo, pero sufiente como prueba de concepto:

<?php

include “objects/class.usuario.php”;

include “objects/class.database.php”;

include “configuration.php”;

$us= new Usuario();

$us->usuario=”santiagozky”;

$us->password=”secreto”;

$us->nombre=”’santiago”;

if($us->Save()){

echo “genial “;

} else{ “owww “;}

$us2= new Usuario();

$us2->Get($us->usuarioId);

echo “$us2->nombre”;

?>

Como ven, nada complicado.

Pueden ver más documentación aquí.

Comenzando con Spring

Marzo 5, 2009

Para cierto proyecto en mi trabajo he tenido que comenzar a usar Spring. Todavía no lo comienzo a usar formalmente, pero he leido mucho y ha sido muy interesante.

Debo admitir que había leido mucho sobre IoC (inversión de control o inyección de dependencias) pero no lo había entendido bien hasta que probé un demo de Spring.

La documentación que mas me fue útil es un manual de MyEclipse y la documentación de Spring

All work and no play makes Jack a dull boy.

No me llamo Jack pero nunca me había sentido tan identificado con una frase.

Parece que últimamente tengo  (realmente debería decir tenemos pues no soy el único) cierta afinidad por aceptar proyectos. Hace 6 meses me metí en uno que no ha sido mas que dolores de cabeza (y del que espero deshacerme pronto) y hace 1 mes acepté otro que parece mas prometedor pero me quita demasiado tiempo que debería estar dedicando a mi último semestre en la universidad. Al menos este último me generará dinero en algún momento (contadores….).

Además necesito un proyecto adicional con alguna compañía / cliente como requisito para graduarme (en lugar de tesis). En total debería estar trabajando unas 14 horas diarias. A eso, por supuesto, hay que sumar el tiempo de comidas y sueño, digamos unas 8 por todo. Así que como pueden ver, si saben sumar, no tengo mucho tiempo para mi, lo cual puede ser bastante frustante cuando tienes tantas cosas que deseas hacer (libros en la pila o escribir aqui).

Pero todo termina en noviembre cuando la gente pueda llamarme Ingenierio de forma oficial :D

Netbeans 6.0

Noviembre 29, 2007

Una de las cosas que estuve probando a lo largo de este semestre es la próxima versión del popular IDE para java. Netbeans 6.0. Estuve probando desde el beta 1 hasta el RC2 y la verdad me sentí muy cómodo con él.

Una de las cosas que mas me gustaron es que el Java Persistence Api, que yo encuentro muy cómodo,  está muy bien integrado. Además el plugin para obtener diagramas UML por ingeniería inversa funciona bastante bien (probé diagramas de clases y de secuencia).

Otra cosita que aprecié (no recuerdo si estaba en la versión 5.5) es la de ‘refactoring’ (no se traducir eso) que básicamente permite seleccionar un código para meterlo en algún bloque (método, ciclo, condicional, etc). Perfecto si tienes malo hábitos de programación como su servidor.

El problema fue que si lo encontré algo lento, aunque puede que tenga que ver que mi computadora no es especialmente potente (sempron 3500+, 512 de ram con ubuntu 7.10 y java 6). A veces el proceso completo llegaba a usar mas de 500 megas (300 cargados en memoria el resto en swap) dejando mi computadora con miseros 4mb libres de memoria. Pero esto solo sucedó con muchas pestañas abiertas o manejando diagramas UML.

Creo que seguiré usando la versión 6, especialmente ahora que la versión final está cerca. Si les gusta netbeans no se lo pueden perder.

lo encuentran en netbeans.org