El Proyecto Doctrine (o Doctrine ) es un conjunto de bibliotecas PHP enfocadas principalmente en proporcionar servicios de persistencia y funcionalidades relacionadas. Sus proyectos más conocidos [ ¿según quién? ] son el mapeador objeto-relacional (ORM) y la capa de abstracción de base de datos sobre la que está construido.
Una de las características clave de Doctrine es la opción de escribir consultas de bases de datos en Doctrine Query Language (DQL), un dialecto orientado a objetos de SQL.
Los desarrolladores de dos importantes frameworks PHP, Symfony y Laminas, tienen soporte oficial listo para usar para Doctrine, mientras que los paquetes Doctrine de terceros están disponibles para Laravel , CodeIgniter y otros.
Las entidades en Doctrine 2 son objetos PHP livianos que contienen propiedades persistentes. Una propiedad persistente es una variable de instancia de la entidad que se guarda en la base de datos y se recupera de ella mediante las capacidades de mapeo de datos de Doctrine a través del Administrador de entidades, una implementación del patrón de mapeo de datos :
$usuario = nuevo Usuario (); $usuario -> nombre = "john2" ; $usuario -> contraseña = "doe" ; //$entityManager es una instancia de Doctrine\ORM\EntityManagerInterface, generalmente obtenida a través de la inyección de dependencia $entityManager -> persist ( $user ); $entityManager -> flush (); echo "El usuario con id $user->id ha sido guardado." ;
Doctrine 1.x sigue el patrón de registro activo para trabajar con datos, donde una clase se corresponde con una tabla de base de datos . Por ejemplo, si un programador quisiera crear un nuevo objeto "Usuario" en una base de datos, ya no necesitaría escribir consultas SQL , sino que podría usar el siguiente código PHP:
$usuario = new Usuario (); $usuario -> nombre = "john" ; $usuario -> contraseña = "doe" ; $usuario -> guardar (); echo "El usuario con id $usuario->id ha sido guardado." ;
Una característica de Doctrine es el bajo nivel de configuración que se necesita para iniciar un proyecto. Doctrine puede generar clases de objetos a partir de una base de datos existente y, a continuación, el programador puede especificar relaciones y agregar funcionalidad personalizada a las clases generadas. No es necesario generar ni mantener esquemas de bases de datos XML complejos , como ocurre en muchos otros marcos.
Otra característica clave de Doctrine es la capacidad de escribir consultas de bases de datos en un dialecto SQL orientado a objetos (OO) llamado DQL (Doctrine Query Language) inspirado en el HQL de Hibernate . Alternativamente, la clase QueryBuilder ( Doctrine_Query en Doctrine 1.x) permite construir consultas a través de una interfaz fluida . Estas interfaces proporcionan a los desarrolladores alternativas potentes a SQL que mantienen la flexibilidad y aún permiten cambiar de back-end de la base de datos, sin requerir ninguna duplicación de código.
Sin embargo, no siempre es necesario escribir consultas explícitamente, ya que Doctrine realiza uniones y recupera objetos relacionados automáticamente. Se pueden crear proyectos pequeños fácilmente sin escribir consultas.
Otras características notables de Doctrina son:
Doctrine fue iniciado por Konsta Vesterinen, también conocido como zYne- . El compromiso inicial del proyecto se realizó el 13 de abril de 2006. A medida que el proyecto se hizo más maduro, la adopción comenzó a aumentar. En poco tiempo, la comunidad estaba activa y el desarrollo recibía contribuciones regulares, entre otras, del proyecto Google Summer of Code .
Doctrine 1.0.0 se lanzó el 1 de septiembre de 2008. [1]
La primera versión estable de Doctrine 2.0 se lanzó el 22 de diciembre de 2010, después de 2,5 años de desarrollo dedicado a principios de 2008. [2]
Doctrine ha sido influenciado por docenas de proyectos y muchas personas diferentes. Las mayores influencias han sido la solución ORM de Java Hibernate y la arquitectura ActiveRecord utilizada en Ruby on Rails . El propósito del proyecto Doctrine es construir una solución igualmente poderosa para el lenguaje PHP para sitios web de alta carga que deben mantener un flujo constante de visitantes. Doctrine ORM se puede utilizar para mejorar el rendimiento de dichos sitios web.