Doctrine es un mapeador de objetos-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 SGBD.

Doctrine 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 = ‘AjpdSoft’;
$user->password = ‘contraseña’;
$user->save();
echo "El usuario con id $user->id se ha guardado en la base de datos.";

Una de las características más importantes 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.