Das Doctrine-Projekt (oder kurz Doctrine ) ist eine Sammlung von PHP- Bibliotheken, die sich primär auf die Bereitstellung von Persistenzdiensten und verwandten Funktionen konzentriert . Zu den bekanntesten Projekten gehören der Objekt-Relationale Mapper (ORM) und die darauf aufbauende Datenbankabstraktionsschicht .

Eine der wichtigsten Funktionen von Doctrine ist die Möglichkeit, Datenbankabfragen in Doctrine Query Language (DQL) zu schreiben, einem objektorientierten Dialekt von SQL.

Die Entwickler der beiden großen PHP-Frameworks Symfony und Laminas bieten offizielle, sofort einsatzbereite Unterstützung für Doctrine, während Doctrine-Pakete von Drittanbietern für Laravel , CodeIgniter und andere Frameworks erhältlich sind.

Anwendungsdemonstration

Entitäten in Doctrine 2 sind leichtgewichtige PHP-Objekte, die persistente Eigenschaften enthalten. Eine persistente Eigenschaft ist eine Instanzvariable der Entität, die mithilfe der Datenmapping-Funktionen von Doctrine über den Entity Manager – einer Implementierung des Datenmapper-Musters – in der Datenbank gespeichert und abgerufen wird .

$user = new User (); $user- > name = "john2" ; $user- > password = "doe" ;//$entityManager ist eine Instanz von Doctrine\ORM\EntityManagerInterface, die üblicherweise durch Dependency Injection bezogen wird. $entityManager- > persist ( $user ); $entityManager- > flush ();echo "Der Benutzer mit der ID $user->id wurde gespeichert." ;

Doctrine 1.x folgt dem Active-Record-Muster für die Datenverarbeitung, wobei eine Klasse einer Datenbanktabelle entspricht . Wenn ein Programmierer beispielsweise ein neues „User“-Objekt in einer Datenbank erstellen möchte, muss er keine SQL- Abfragen mehr schreiben, sondern kann stattdessen den folgenden PHP-Code verwenden:

$user = new User (); $user- > name = "john" ; $user- > password = "doe" ; $user- > save (); echo "Der Benutzer mit der ID $user->id wurde gespeichert." ;

Merkmale

Überblick über die Lehre

Eine Besonderheit von Doctrine ist der geringe Konfigurationsaufwand für den Projektstart. Doctrine kann Objektklassen aus einer bestehenden Datenbank generieren, und der Programmierer kann anschließend Beziehungen definieren und die generierten Klassen um benutzerdefinierte Funktionen erweitern. Im Gegensatz zu vielen anderen Frameworks ist es nicht erforderlich, komplexe XML- Datenbankschemata zu erstellen oder zu pflegen.

Ein weiteres wichtiges Merkmal von Doctrine ist die Möglichkeit, Datenbankabfragen optional in einem objektorientierten SQL-Dialekt namens DQL (Doctrine Query Language) zu schreiben, der von Hibernates HQL inspiriert ist . Alternativ ermöglicht die Klasse `QueryBuilder` (in Doctrine 1.x `Doctrine_Query` ) die Erstellung von Abfragen über eine intuitive Schnittstelle . Diese Schnittstellen bieten Entwicklern leistungsstarke Alternativen zu SQL, die Flexibilität gewährleisten und den Wechsel zwischen verschiedenen Datenbank-Backends ohne Code-Duplizierung ermöglichen.

Das explizite Schreiben von Abfragen ist jedoch nicht immer notwendig, da Doctrine Joins durchführt und zugehörige Objekte automatisch abruft. Kleinere Projekte lassen sich problemlos ohne das Schreiben von Abfragen realisieren.

Weitere bemerkenswerte Merkmale der Doktrin sind:

  • Unterstützung für Hooks (Methoden, die Datenbank-Ein- und -Ausgaben validieren oder modifizieren können) und Event-Listener zur Strukturierung geschäftsbezogener Logik;
  • Vererbung der Spaltenaggregation (ähnliche Objekte können in einer Datenbanktabelle gespeichert werden, wobei eine Typspalte den Subtyp des jeweiligen Objekts angibt - bei einer Abfrage wird immer die richtige Unterklasse zurückgegeben);
  • ein Caching-Framework, das verschiedene Backends wie memcached , SQLite oder APC nutzt ;
  • ACID- Transaktionen;
  • Datenbankmigrationen;
  • Eine „Compile“-Funktion, um viele PHP-Dateien des Frameworks zu einer einzigen Datei zusammenzufassen und so den Leistungsverlust zu vermeiden, der normalerweise durch das Einbinden der vielen PHP-Dateien eines Frameworks entsteht.

Geschichte

Doctrine wurde von Konsta Vesterinen, auch bekannt als zYne-, ins Leben gerufen . Der erste Commit des Projekts erfolgte am 13. April 2006. Mit zunehmender Reife des Projekts wuchs auch die Akzeptanz. Schon bald war die Community aktiv und die Entwicklung erhielt regelmäßige Beiträge, unter anderem vom Google Summer of Code- Projekt.

Doktrin 1.0.0 wurde am 1. September 2008 veröffentlicht. [ 1 ]

Die erste stabile Version von Doctrine 2.0 wurde am 22. Dezember 2010 veröffentlicht, nach 2,5 Jahren intensiver Entwicklung, die Anfang 2008 begann. [ 2 ]

Einflüsse

Doctrine wurde von Dutzenden Projekten und vielen verschiedenen Personen beeinflusst. Die größten Einflüsse waren die Java -ORM- Lösung Hibernate und die ActiveRecord -Architektur von Ruby on Rails . Ziel des Doctrine-Projekts ist es, eine ebenso leistungsstarke Lösung für die Programmiersprache PHP zu entwickeln , die für stark frequentierte Websites mit konstantem Besucherstrom geeignet ist. Doctrine ORM kann zur Verbesserung der Performance solcher Websites eingesetzt werden.

Siehe auch

Referenzen