phpORM - Obteniendo Objetos de nuestra base de datos
January 28th, 2008 | by necudeco |En el desarrollo de aplicaciones de base de datos, una de las principales tareas y tambien la mas repetitiva es el acceso a los datos. La forma mas sencilla pero a la vez la que mas problemas de seguridad presenta es realizar un select cada vez que se requiere alguna informacion.
Sin embargo la informacion que manejan los sistemas, en la vida real se asemeja mas a objetos que a datos escalares. Por ejemplo es logico pensar que un alumno, tiene un codigo de matricula y dado que tambien es una persona dispone de un nombre. Para poder obtener este tipo de informacion orientada a objetos de una base de datos relacional, es que se utilizan los mapeadores ORM.
Estas librerias convierten una base de datos relacional en una base de datos virtual orientada a objetos.
Todos los frameworks de desarrollo ( rails, django, cakephp ) disponen de algun ORM propio que les permita lograr el acceso a la informacion sin mucho esfuerzo por parte del programador. Sin embargo esos ORM estan tan ligados al framework en cuestion que nos obligan a atarnos con alguna plataforma especifica.
phpORM, es una libreria desarrollada, obviamente, en php para trabajar de una forma facil y rapida la capa de datos de nuestra aplicacion.
Para utilizar esta libreria en nuestra aplicacion, debemos crear los siguientes archivos:
//config.php
// Este archivo debe estar en el inicio de nuestra aplicacion
require_once(”ORMConnection.php”);function getConnection($debug=false)
{
$config = array(
“server”=>”localhost”,
“user”=>”root”,
“pass”=>”clave”,
“database”=>”databasename”,
“driver”=>”mysqlt”
);
$conn = ORMConnection::getConnection($config);
$conn->debug=$debug;
return $conn;
}?>
y una clase por cada tabla a manejar, por ejemplo la clase Post:
//Post.php
include_once("ORMBase.php");class Post extends ORMBase
{
protected $tablename = “wp_posts”;public function __construct($pk=null)
{
$this->fields[”id”] = ORMUtil::createElement(”ID”,null,true,true);
$this->fields[”title”] = ORMUtil::createElement(”post_title”);
$this->fields[”content”] = ORMUtil::createElement(”post_content”);parent::__construct($pk);
}
}
?>
Como pueden ver la clase post, define el nombre de la tabla,asi como los campos de la misma que nos interesa manejar. Estos campos no tienen porque ser necesariamente todos los campos que la tabla contiene.
Luego de eso el manejo de la informacion es tan sencillo como crear objetos y consultar sus propiedades:
include_once(”class/Post.php”);
include_once(”class/Comment.php”);$post = new Post();
foreach( $post->getAll() as $post )
{
echo “<h1>”.$post->title .”</h1>;
$comment = new Comment();
echo “<ul>";
foreach ( $comment->getAllWhere(array(”postid”=>$post->id)) as $comment)
{
echo “<li>”.$comment->content.”</li>”;
}
echo “</ul>”;
}
?>
La libreria aun esta en desarrollo, pero ya la estoy usando en un par de projectos lo cual le asegura un desarrollo continuo. Si deseas contribuir lo puedes hacer usandola e indicandome las carencias o creando un manual de uso
Puedes descargar esta version de aca
Technorati Tags: php, phporm, orm, desarrollo
Powered by ScribeFire.


