Doctrine (PHP)

Doctrine es un mapeador objeto-relacional (ORM) escrito en PHP que proporciona una capa de persistencia para objetos PHP. Es una capa de abstracción que se sitúa justo encima de un sistema de gestión de bases de datos (SGBD).

Doctrine
Información general
Tipo de programa Mapeo objeto-relacional framework
Lanzamiento inicial 13 de abril de 2006
Licencia GNU Lesser General Public License
Estado actual Activo
Información técnica
Programado en PHP
Versiones
Última versión estable 2.6.423 de septiembre de 2019
Enlaces

Demostración de uso

En Doctrine 2 las entidades son objetos PHP livianos que contienen propiedades persistibles. Una propiedad persistible es una instancia variable de la entidad que es guardada y obtenida desde la base de datos por la capacidad de mapear los datos a través de Entity Manager, una implementación del patrón data mapper:

$user = new User();
$user->name = "Juan";
$user->password = "123";
$entityManager->persist($user);
$entityManager->flush();
echo "El usuario con id $user->id se ha guardado.";

Doctrine 1.x se basa en el active record pattern para trabajar con datos, en los que una clase se corresponde con una tabla de base de datos. Por ejemplo, si un programador quiere crear un nuevo objeto "Usuario" en la base de datos, no tendrá que escribir ninguna sentencia SQL, simplemente lo siguiente:

$user = new User();
$user->name = 'Juan';
$user->password = '123';
$user->save();
echo "El usuario con id $user->id se ha guardado.";

Características

Una característica de Doctrine es el bajo nivel de configuración que necesita para empezar un proyecto. Doctrine puede generar clases a partir de una base de datos existente y después el programador puede especificar relaciones y añadir funcionalidad extra a las clases autogeneradas. No es necesario generar o mantener complejos esquemas XML de base de datos como en otros frameworks.

Otra característica importante de Doctrine es la posibilidad de escribir consultas de base de datos utilizando un dialecto de SQL denominado DQL (Doctrine Query Language) que está inspirado en Hibernate (Java).

Otras características notables de Doctrine son:

  • Soporte para datos jerárquicos;
  • Soporte para hooks (métodos que pueden validar o modificar las escrituras y lecturas de la base de datos) y eventos para manejar la lógica de negocio relacionada;
  • Herencia;
  • Un framework de caché que utiliza diversos motores como memcached, SQLite o APC;
  • Transacciones ACID;
  • Diversos comportamientos del modelo (conjuntos anidados, internacionalización, log, índice de búsqueda);
  • Una función "compilar" que combina varios archivos PHP del framework en uno solo para evitar el descenso de rendimiento que provoca incluir varios archivos PHP.

Historia

El proyecto Doctrine empezó con Konsta Vesterinen, también conocido como zYne-. El 13 de abril de 2006 se hizo el primer envío al repositorio svn.

Influencias

Doctrine tiene influencias de docenas de proyectos de personas muy diferentes. Las mayores influencias son de Hibernate (el ORM de Java) y de ActiveRecord (de Ruby on Rails). Ambos tienen una implementación completa tanto en Java como en Ruby. El propósito de Doctrine es construir una solución igual de potente para PHP.

Comunidad

Véase también

Referencias

    Enlaces externos

    Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.