Zum Inhalt springen

„Doctrine (PHP)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Version angepasst
K Abschnittlink korrigiert
 
(16 dazwischenliegende Versionen von 16 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Software
{{Infobox Software
| Name = Doctrine
| Name = Doctrine
| Logo =
| AktuelleVersion = 2.4.0
| Screenshot =
| AktuelleVersionFreigabeDatum = 7. September 2013
| Beschreibung =
| Maintainer =
| Hersteller =
| Erscheinungsjahr =
| AktuelleVersion = 2.10.3
| AktuelleVersionFreigabeDatum = 3. Dezember 2021
| AktuelleVorabVersion = 3.0
| AktuelleVorabVersionFreigabeDatum =
| Betriebssystem =
| Programmiersprache = [[PHP]]
| Programmiersprache = [[PHP]]
| Kategorie= [[Framework]], [[Objektrelationale Abbildung|Objektrelationaler Mapper]]
| Kategorie = [[Framework]], [[Objektrelationale Abbildung|Objektrelationaler Mapper]]
| Lizenz = [[GNU Lesser General Public License]]
| Lizenz = [[MIT-Lizenz]]
| Deutsch =
| Website = [http://www.doctrine-project.org www.doctrine-project.org]
| Website = [https://www.doctrine-project.org/ www.doctrine-project.org]
| Dateien =
}}
}}


'''Doctrine''' oder '''phpDoctrine''' ist ein Framework zur [[Objektrelationale Abbildung|objektrelationalen Abbildung]] (englisch ''object-relational mapping'', ORM) für [[PHP]] 5.3.0+. Doctrine wurde unter den Gesichtspunkten der Geschwindigkeit und Reichhaltigkeit an Funktionen entwickelt. Jonathan Wage, seit 2007 Projektleiter bei Doctrine, erklärt: "Ein ORM ist eine Abstraktionsschicht zwischen relationaler Datenbank und der eigentlichen Anwendung. Statt per SQL kann man durch das ORM objektorientiert auf die Daten zugreifen." <ref>{{Internetquelle | url = http://t3n.de/magazin/jonathan-wage-seinen-einstieg-doctrine-zukunft-projekts-224058/ | titel = Jonathan Wage, Doctrine: „Wir hatten gute Entwickler, aber keine Vision“ | werk = t3n | datum = 2010-06-10 | zugriff = 2012-06-18}}</ref>
Das '''Doctrine Project''' oder kurz '''Doctrine''' ist ein [[Framework]], das die Möglichkeit der [[Objektrelationale Abbildung|objektrelationalen Abbildung]] ({{enS|''object-relational mapping''}}, ''ORM'') sowie eine [[Datenbankabstraktionsschicht]] ({{enS|''database abstraction layer''}}) für [[PHP]] ab Version 5.3 bereitstellt. Dadurch ist ein vereinfachter Zugriff auf verschiedene Datenbanktypen (z.&nbsp;B. [[MySQL]] oder [[Microsoft SQL Server]]) möglich, als dies mit reinem PHP möglich wäre. Doctrine orientiert sich an [[Hibernate (Framework)|Hibernate]], einem ähnlichen Projekt für [[Java (Programmiersprache)|Java]].


Datenbankabfragen können in der Doctrine-eigenen Zwischensprache ''Doctrine Query Language'' (DQL) formuliert werden. Der objektorientierte Ansatz ermöglicht ein abstraktes Arbeiten unabhängig von der verwendeten Datenbank. Auch können Datenbankinhalte objektorientiert verwaltet werden, ohne einen [[Wrapper (Software)|Wrapper]] dafür bereitzustellen. Die objektrelationale Funktionalität wird hier den Objekten selbst zugewiesen, ohne dass eine aufwändige Programmierung in PHP notwendig ist.
Das Framework setzt auf einer leistungsstarken [[Datenbankabstraktionsschicht]] auf. Durch Doctrine ist mit Hilfe von PHP ein einfacher Zugriff auf verschiedene Datenbanktypen möglich, wie beispielsweise [[MySQL]]. Das Prinzip von Doctrine greift ebenfalls Gedanken von [[Hibernate (Framework)|Hibernate]] auf. Hierfür kommt die [[proprietär]]e SQL-Sprache namens Doctrine Query Language (DQL) zum Tragen, die von Hibernates HQL inspiriert wurde.


Da der DBAL mehrere Datenbankserver ansprechen kann, umfasst DQL nur die Menge an SQL-Funktionalität, die in allen von Doctrine unterstützten SQL-Systemen verfügbar sind. Dadurch sind beispielsweise komplexere [[SQL#Inner|Joins]] nicht immer möglich. Zudem hat Doctrine strikte Einschränkungen bezüglich des Aufbaus der Datenbanken. So muss z.&nbsp;B. jede Tabelle zwingend einen [[Schlüssel (Datenbank)|Primärschlüssel]] aufweisen. Dadurch kann es insbesondere mit großen Bestandsdatenbanken, die vorher mit regulärem SQL gepflegt wurden, zu Problemen kommen.
Programmierer, die mit Doctrine arbeiten, müssen ihre Abfragen nicht länger in SQL formulieren. Der objektorientierte Ansatz ermöglicht ein abstraktes Arbeiten unabhängig von der verwendeten Datenbank. Auch können Datenbankinhalte objektorientiert verwaltet werden, ohne einen [[Wrapper (Software)|Wrapper]] dafür bereitzustellen. Die objektrelationale Funktionalität wird hier den Objekten selbst zugewiesen, ohne dass eine aufwändige Programmierung in PHP notwendig ist. Auf diese Weise gestaltet sich die Verwaltung eines Softwareprojektes wesentlich einfacher.

== Anwendungsbeispiel ==


==Anwendungsbeispiel==
Wenn als Beispiel ein neues Benutzerobjekt in der Datenbank erstellt werden soll, könnte das in PHP geschrieben wie folgt aussehen:
Wenn als Beispiel ein neues Benutzerobjekt in der Datenbank erstellt werden soll, könnte das in PHP geschrieben wie folgt aussehen:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
Zeile 26: Zeile 38:
</syntaxhighlight>
</syntaxhighlight>


Hierbei wird der sogenannte [[Entity Manager]] von Doctrine angewiesen, ein Objekt ([[Model View Controller#Modell_.28model.29|Model]]) zu speichern. Der Entity Manager verwaltet Models und dient als Schnittstelle zur Datenbank.
Hierbei wird der sogenannte [[Entity Manager]] von Doctrine angewiesen, ein Objekt ([[Model View Controller#Modell (model)|Model]]) zu speichern. Der Entity Manager verwaltet Models und dient als Schnittstelle zur Datenbank.


== Weblinks ==
== Weblinks ==
* [http://www.doctrine-project.org doctrine-project.org]


* [https://www.doctrine-project.org doctrine-project.org]
== Einzelnachweise ==
<references />


[[Kategorie:Bibliothek (Programmierung)]]
[[Kategorie:PHP-Bibliothek]]
[[Kategorie:PHP]]

Aktuelle Version vom 17. Juni 2023, 19:40 Uhr

Doctrine
Basisdaten

Erscheinungsjahr 13. April 2006
Aktuelle Version 2.10.3
(3. Dezember 2021)
Aktuelle Vorabversion 3.0
Betriebssystem Plattformunabhängig
Programmier­sprache PHP
Kategorie Framework, Objektrelationaler Mapper
Lizenz MIT-Lizenz
www.doctrine-project.org

Das Doctrine Project oder kurz Doctrine ist ein Framework, das die Möglichkeit der objektrelationalen Abbildung (englisch object-relational mapping, ORM) sowie eine Datenbankabstraktionsschicht (englisch database abstraction layer) für PHP ab Version 5.3 bereitstellt. Dadurch ist ein vereinfachter Zugriff auf verschiedene Datenbanktypen (z. B. MySQL oder Microsoft SQL Server) möglich, als dies mit reinem PHP möglich wäre. Doctrine orientiert sich an Hibernate, einem ähnlichen Projekt für Java.

Datenbankabfragen können in der Doctrine-eigenen Zwischensprache Doctrine Query Language (DQL) formuliert werden. Der objektorientierte Ansatz ermöglicht ein abstraktes Arbeiten unabhängig von der verwendeten Datenbank. Auch können Datenbankinhalte objektorientiert verwaltet werden, ohne einen Wrapper dafür bereitzustellen. Die objektrelationale Funktionalität wird hier den Objekten selbst zugewiesen, ohne dass eine aufwändige Programmierung in PHP notwendig ist.

Da der DBAL mehrere Datenbankserver ansprechen kann, umfasst DQL nur die Menge an SQL-Funktionalität, die in allen von Doctrine unterstützten SQL-Systemen verfügbar sind. Dadurch sind beispielsweise komplexere Joins nicht immer möglich. Zudem hat Doctrine strikte Einschränkungen bezüglich des Aufbaus der Datenbanken. So muss z. B. jede Tabelle zwingend einen Primärschlüssel aufweisen. Dadurch kann es insbesondere mit großen Bestandsdatenbanken, die vorher mit regulärem SQL gepflegt wurden, zu Problemen kommen.

Anwendungsbeispiel

[Bearbeiten | Quelltext bearbeiten]

Wenn als Beispiel ein neues Benutzerobjekt in der Datenbank erstellt werden soll, könnte das in PHP geschrieben wie folgt aussehen:

 $user = new User();
 $user->setName("Max");
 $user->setPassword("test");
 $entityManager->persist($user);
 $entityManager->flush();
 echo "Der Benutzer mit der ID ".$user->getId()." wurde erfolgreich hinzugefügt.";

Hierbei wird der sogenannte Entity Manager von Doctrine angewiesen, ein Objekt (Model) zu speichern. Der Entity Manager verwaltet Models und dient als Schnittstelle zur Datenbank.