Doctrine ist eine fortgeschrittene PHP-Bibliothek für objektorientierte Datenbankarbeit. Der Hauptzweck und das Ziel von Doctrine ist es, das Datenbankschema mit Hilfe von Datenentitäten zu beschreiben und die Daten vollständig objektorientiert zu manipulieren.
Dieses Paradigma wird als ORM (Object-relational mapping) bezeichnet. Es handelt sich dabei um ein Design-Pattern zur Umwandlung (Wrapping) von in einer relationalen Datenbank gespeicherten Daten in ein Objekt, das in einer objektorientierten Sprache verwendet werden kann. Um Doctrine zu verstehen und zu verwenden, müssen Sie also zumindest die Grundlagen der objektorientierten Programmierung kennen.
Dafür gibt es viele Gründe:
Der Autor dieses Artikels (Jan Barasek) ist seit langem der Meinung, dass Doctrine der beste Weg ist, um mit einer PHP-Datenbank zu arbeiten. Es hat einfach keine Konkurrenz.
Bevor Sie Doctrine in vollem Umfang nutzen können, müssen Sie eine geeignete Umgebung vorbereiten. Wenn Sie gerade erst mit PHP anfangen oder noch keine Vorkenntnisse haben, installieren Sie am besten das Nette Framework mit dem Baraja Doctrine Erweiterungspaket, das automatisch die volle Unterstützung integriert. Laden Sie zunächst das Paket über Composer herunter, richten Sie dann die DI-Erweiterung ein, und Doctrine wird automatisch in Betrieb genommen.
Damit Doctrine korrekt funktioniert, müssen Sie eine leere Datenbank vorbereiten (Doctrine kann auch mit einem bestehenden Projekt arbeiten, aber dies ist für die ersten Schritte ungeeignet, da die Gefahr besteht, dass bestehende Daten überschrieben werden) und die Verbindung konfigurieren. Da Doctrine nicht nur eine Datenbankbibliothek ist, sondern ein fortschrittliches Datenbank-Framework bietet, müssen Sie andere Konfiguration lösen. Die meisten Einstellungen werden in diesem Paket für Nette automatisch überschrieben, allerdings muss Ihr Server in der Mindestkonfiguration die Erweiterungen APCu Cache
oder SQLite3
unterstützen.
Wenn alles richtig konfiguriert wurde, wird ein neuer DI-Dienst Baraja\Doctrine\EntityManager
in Nette erstellt, den Sie in Presenter injizieren können:
namespace App\FrontModule\Presenters;use Baraja\Doctrine\EntityManager;final class HomepagePresenter extends BasePresenter{#[Inject]public EntityManager $entityManager;}
Wenn es Ihnen gelingt, den grundlegenden EntityManager-Dienst zu injizieren, können Sie beginnen, Doctrine zu erlernen und mit ihm zu arbeiten.
Die folgenden Kapitel sind eine Kombination aus einem Doctrine-Technologie-Referenzhandbuch, jahrelanger Erfahrung, Entwurfsmustern und vorgefertigten Lösungen. Gemeinsam werden wir alle grundlegenden Elemente von Doctrine durchgehen, von der Definition einer benutzerdefinierten Entität über die Erstellung eines physischen Datenbankschemas bis hin zur Arbeit mit einem Versionierungstool und dem Produktionseinsatz.
Ich benutze Doctrine schon sehr lange und habe Tausende von Fällen damit gelöst. Wir zeigen Tipps und Tricks, wie man mit Doctrine die Geschwindigkeit von Datenbanken optimiert und wie man eine Datenbank angemessen gestaltet. Sie können Doctrine auch für ein bestehendes Projekt verwenden (wenn Sie bestimmte Bedingungen erfüllen), und wir zeigen Ihnen, wie Sie das tun können.
Diese Artikelserie wurde erstellt, um meinen Trainings- und Beratungsstudenten zu helfen. Wenn Sie bestimmte Themen ausführlicher besprechen oder erklären möchten, können Sie mir eine E-Mail an jan@barasek.com schicken. Da es sich um eine relativ anspruchsvolle Technologie handelt, werden alle Fragen wie eine bezahlte Beratung behandelt.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | de