Heim >Backend-Entwicklung >PHP-Tutorial >Einführung in Redbean

Einführung in Redbean

Jennifer Aniston
Jennifer AnistonOriginal
2025-02-23 08:27:09857Durchsuche

Introduction to Redbean

Kernpunkte

  • RedbeanPhp ist ein ORM (Object Relational Mapper), das die zugrunde liegenden Datenbankschemata dynamisch erstellen und ändern kann, was ideal für die Prototypisierung und Beschleunigung der Entwicklung ist.
  • Mit
  • RedbeanPhp können Sie ein Objekt (oder "Bean") erstellen und in einer Datenbank speichern und das Muster automatisch anpassen, selbst wenn keine entsprechende Tabelle vorhanden ist.
  • RedbeanPhp unterstützt die Beziehungen zwischen Objekten durch das Konzept des "Besitzes" von verwandten Objekten, einschließlich Eins-zu-Eins-Beziehungen, eins zu vielen und vielen zu vielen Beziehungen.
  • RedbeanPhps "Streaming -Modus" ermöglicht die automatische Anpassung des Datenbankschemas, wenn sich Objekte ändern. Es wird empfohlen, in der Produktion auf "Frozen -Modus" in Produktion zu wechseln, um eine verbesserte Leistung und Sicherheit zu erhalten.
  • Während RedbeanPhp ein hervorragendes Instrument für Prototyping und schnelle Iteration ist, ist auch Vorsicht erforderlich, wenn sie in Produktionsumgebungen verwendet werden, z. B. in den Spaltendatentypen, Fremdschlüssel, Beziehungen und Indizes.

Einführung in RedbeanPhp

In der Rapid Application Development (RAD) und Prototyping gibt es viele Tools, mit denen Sie schnell beginnen können. Von Quick bis zu Mini-Frameworks, von Build-Tools wie Composer bis hin zu Einklick-Installateuren und natürlich ORM-gibt es viele Möglichkeiten, die Entwicklung zu beschleunigen. Wir werden uns auf RedbeanPhp konzentrieren, ein einzigartiges Orm, das perfekt für Prototypen geeignet ist.

Anfänger von RedbeanPhp

RedbeanPhp ist ein ORM (Object Relational Mapper), aber es ist mehr als nur ein ORM - es kann das zugrunde liegende Datenbankschema dynamisch erstellen und ändern. Traditionell würden Sie Orm als Wrapper für vorgeplante, bereits bestehende Datenbankschemata verwenden. Dies ist für die meisten Projekte in Ordnung, aber wenn Sie Prototyping (oder dabei denken), kann es weiter beschleunigen, wenn Sie es im Hintergrund für Sie erledigen.

Wenn Sie ein Objekt (oder ein Bean) mit RedbeanPhp erstellen, passt das Schema automatisch an die Anpassung an, solange Sie es in die Datenbank speichern. Dies gilt auch dann, wenn Sie versuchen, ein Objekt zu speichern, das keine entsprechende Tabelle hat!

Installation

Der einfachste Weg, RedbeanPhp zu installieren, besteht darin, das All-in-One-Paket herunterzuladen. Dann müssen Sie nur eine einzelne Datei rb.php vorstellen.

Sie können es auch über den Komponisten installieren.

Bean

verteilen

Der erste Schritt bei der Verwendung von RedbeanPhp besteht darin, eine Bean zu "verteilen" - es ist im Grunde ein Objekt. Beachten Sie, dass ich für den Rest dieses Artikels "Bean" und Objekte austauschbar benutze.

Verteilung erfolgt durch die statische Methode der oberen Redbean -Klasse "R", die den Typ als Parameter nimmt.

Beispiel:

<code class="language-php">$user = R::dispense('user');</code>

Dies erstellt ein leeres Benutzerobjekt, dem Sie Eigenschaften zuweisen können. Sie können auch mehrere Bohnen gleichzeitig verteilen, indem Sie die erforderliche Zahl als zweiter Parameter hinzufügen:

<code class="language-php">$users = R::dispense('user', 10);</code>

In diesem Stadium spielt es keine Rolle, ob eine Tabelle in der Datenbank vorhanden ist, um sie zu speichern.

probieren wir es aus-bitte beachten Sie die Verwendung der statischen Methode store, mit der zur Datenbank geschrieben wird:

<code class="language-php">$user = R::dispense('user');</code>

In den meisten Ormen schlägt dies fehl, wenn Sie keine Tabelle erstellt haben, um den Benutzer zu speichern. Mit RedbeanPhp wird dies jedoch erfolgreich sein, da die Tabelle für Sie erstellt wird. Wenn Sie sich Ihre Datenbank in dieser Phase ansehen, sollten Sie eine solche Tabelle sehen:

<code class="language-php">$users = R::dispense('user', 10);</code>

Die Namenskonvention ist aufgrund der Notwendigkeit sehr streng.

Lassen Sie uns nun sehen, wie sich das Muster beim Iterieren verändert. Benutzerdatensätze erfordern möglicherweise ein Kennwortfeld - wir haben jedoch vergessen, sie zu erstellen.

Wenn Sie dies tun:

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

Diesmal weiß RedbeanPhp, wie man Benutzer speichert, aber die Datenbanktabelle kann keine neuen Feldern aufnehmen. Das ist in Ordnung - es fügt nur eine hinzu, Ihre Leistung sieht so aus:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>

(Der folgende Inhalt ähnelt dem Originaltext, aber die Satzstruktur und die Wortanpassungen wurden vorgenommen, und die Bildposition und das Format bleiben unverändert)

Felddatentyp

RedbeanPhp wird versuchen, den Datentyp des Feldes basierend auf den von Ihnen bereitgestellten Informationen zu erraten. Also, wenn Sie:

tun
<code class="language-php">$user->password = 'secret';
R::store($user);</code>

Sie werden feststellen, dass das Altersfeld als Tinyint erstellt wurde.

Wenn der Feldtyp später nicht ausreicht, ändert sich RedbeanPhp dynamisch. Wenn Sie jetzt versuchen, 3000 dem Alter zuzuweisen, wird die Spalte in Int geändert. Wenn Sie den Namen als "dreißig" buchstabieren, ändert er sich in Varchar. Setzen Sie das VARCHAR -Feld auf mehr als 255 Zeichen, es wird zu einem Textfeld und so weiter.

finde bean

Sie können mit der Methode load ein bestimmtes Objekt nach Primärschlüssel laden:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>

Sie können mit der Methode batch mehrere Objekte gleichzeitig laden (drücken Sie die Primärtaste):

<code class="language-php">$user->age = 30;
R::store($user);</code>

Dies gibt eine Reihe von Bohnen zurück.

Sie können auch SQL verwenden, um Bohnen zu finden. Der zweite Parameter der find -Methode ist im Wesentlichen SQL, beginnend mit der WHERE -Klausel, ausgenommen das Where -Schlüsselwort selbst. Zum Beispiel, um Benutzer unter 20 Jahren zu finden:

<code class="language-php">$user = R::load('user', 1);</code>

Beachten Sie, dass wir die Parameter binden, sodass der dritte Parameter ein Array ist. Dadurch wird eine Reihe von Bohnen mit seiner ID als Schlüssel zurückgegeben.

Sie können SQL mehr Klauseln hinzufügen, wie:

count

Sie können die Methode count verwenden, um die Anzahl der Datensätze zu finden:

<code class="language-php">$users = R::batch('user', array(1, 2, 3));</code>

löschen

Verwenden Sie trash:

, um eine einzelne Bohne zu löschen
<code class="language-php">$users = R::find('user', 'age < 20');</code>

, um mehrere Bohnen eines bestimmten Typs zu löschen, verwenden Sie trashAll:

<code class="language-php">$number_of_users = R::count('user');</code>

, um alle Bohnen eines bestimmten Typs zu löschen, verwenden Sie wipe:

<code class="language-php">R::trash($user);</code>

oder um alles zu löschen - dies kann bei Prototyping nützlich sein - Sie können nuke:

verwenden
<code class="language-php">R::trashAll('user');</code>

Beziehung

Wie bei jeder ORM wird die Beziehung zwischen Objekten unterstützt.

Eins-zu-Viele-Beziehungen verwenden das Konzept, verwandte Objekte zu "besitzen", um zu referenzieren. Wenn beispielsweise die Bestellung nur einen Benutzer hat, wird der Benutzer die Bestellungen als "eigen" bezeichnet. Durch die Verwendung spezifischer Variablennamen können wir diese Beziehung wie folgt erstellen:

<code class="language-php">$user = R::dispense('user');</code>

Das Schlüsselelement hier ist das Attribut ownOrders. Wenn Sie jetzt Ihre Datenbank überprüfen, sollten Sie feststellen, dass RedbeanPhp zusammen mit den entsprechenden Fremdschlüssel das Feld user_id zur Bestellentabelle hinzugefügt hat.

Benutzer, die die Bestellung "besitzen" können, können einfach als Attribute zugreifen, zum Beispiel:

<code class="language-php">$users = R::dispense('user', 10);</code>

, um eine viel zu viele Beziehung zu demonstrieren, lassen Sie uns einige Zeichen erstellen:

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

Rollen sind nicht nur einzelne Benutzer. Um dem Benutzer die ersten beiden Rollen zuzuweisen und dabei eine Beziehung in der Datenbank aufzubauen, können wir dies tun:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>

Diesmal sollten Sie eine neue Tabelle namens role_user finden, die diese Beziehung als eine Viele-zu-Viele-Beziehung definiert.

Sie können die Rolle erhalten, die dem Benutzer gehört, indem Sie das Attribut lesen:

<code class="language-php">$user->password = 'secret';
R::store($user);</code>

Diese Verzögerungen des Ladens von Rollen beim ersten Mal, als sie zugegriffen werden.

Beziehungen haben noch viel mehr, einschließlich Hinzufügen von Attributen zu Beziehungen mit link, Filterung durch Link, dringendes Laden usw. - Bitte überprüfen Sie die Dokumentation für Details.

Modell

Sie können Modelle erstellen, die den Bean -Typen entsprechen, und befolgen Sie nur bestimmte Namenskonventionen. Das Modell verbindet dann mit der Sicherung mit der Bohne.

Die Konvention ist einfach; Um beispielsweise ein Modell für einen Benutzer zu erstellen, müssen Sie nur Folgendes tun: Model_Type

Nach der Definition des Modells können Sie viele Methoden implementieren, die an verschiedenen Stellen im Lebenszyklus der Bohne aufgerufen werden. Die folgende Tabelle zeigt die Zuordnung zwischen der CRUD -Operation und dem "Hook", den Sie implementieren können:
<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>

Sie können beispielsweise die Validierung hinzufügen, indem Sie update():

implementieren
<code class="language-php">$user = R::dispense('user');</code>

Sie können natürlich auch Ihre eigenen Methoden erstellen und Getter anpassen.

Abfragedatenbank

Sie können die ursprüngliche SQL -Abfrage wie folgt ausführen:

<code class="language-php">$users = R::dispense('user', 10);</code>

Sie können ein mehrdimensionales Array von Zeilen wie folgt zurückgeben:

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

Zusätzlich können Sie Parameterbindung verwenden:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>

Sie können eine einzelne Spalte wie folgt erhalten:

<code class="language-php">$user->password = 'secret';
R::store($user);</code>

Sie können das assoziative Array auch mit zwei Spalten der Tabelle erhalten:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>

Bereitstellen Sie Ihre Anwendung

Während es wohl das Beste für Prototyping (oder zumindest Entwicklung) ist - können Sie bestimmte Schritte ausführen, es gibt keinen Grund, warum RedbeanPhp in Produktionsumgebungen nicht weiter verwendet werden kann.

Der Mechanismus des dynamischen Aktualisierungsmodus von RedbeanPhp wird "Streaming -Modus" bezeichnet. Sie können es jedoch ausschalten, indem Sie es "einfrieren":

<code class="language-php">$user->age = 30;
R::store($user);</code>

Beim Eintritt in die Produktion müssen Sie die folgenden Schritte ausführen:

  • Spaltendatentyp
  • überprüfen
  • Überprüfen Sie fremde Schlüssel und Beziehungen
  • Überprüfen Sie den Index - RedbeanPhp erstellt einige Indizes - und ändern Sie sie nach Bedarf

Zusammenfassung

In diesem Artikel habe ich RedbeanPhp eingeführt, eine bequeme Möglichkeit, Ihren Entwicklungsprozess zu starten, indem Sie Domänenmodelle verarbeiten können, ohne zuerst das zugrunde liegende Muster aufbauen zu müssen. Ob es für Produktionsumgebungen geeignet ist, bleibt abzuwarten - aber es ist ein großartiges Gerät für Prototyping und schnelle Iteration. Ich behandle nicht viel, also schauen Sie sich die Dokumentation an.

Redbeanphp FAQ

Was sind die Hauptfunktionen von RedbeanPhp?

RedbeanPhp ist ein einfaches, leichtes Objekt-Relations-Mapping-Tool (ORM), das eine Reihe von Funktionen bietet, mit denen die Datenbankinteraktion vereinfacht wird. Es ist bekannt für seinen "Zero -Konfigurations" -Ansatz, was bedeutet, dass nur minimales Setup und Konfiguration erforderlich sind. Es erstellt automatisch das Datenbankschema basierend auf den von Ihnen erstellten Objekten und kann das Schema nach Bedarf anpassen, wenn sich das Objekt ändert. RedbeanPhp unterstützt auch den Streaming -Modus und den Gefriermodus, sodass Sie einfach zwischen Entwicklungs- und Produktionsumgebungen wechseln können. Es enthält eine eingebaute Baumstruktur und unterstützt Bohnenkonserven und -verteilung, um Objekte leicht zu speichern und abzuholen.

Wie ist RedbeanPHP mit anderen Orm -Tools verglichen?

im Vergleich zu anderen ORM -Tools zeichnet sich RedbeanPHP aus. Es sind keine Konfigurationsdateien, SQL- oder Modellklassen erforderlich. Dies macht es zu einer guten Wahl für Anfänger oder Projekte, bei denen ORM voll ausgeglichene Orm überflüssig erscheint. Es bietet jedoch immer noch leistungsstarke Funktionen wie automatische Modusmodifikation und Baumstruktur, sodass sie für komplexere Projekte ausreichend sind.

Wie installiert und richten Sie RedbeanPhp ein?

RedbeanPhp kann über Composer (ein beliebtes PHP -Abhängigkeitsmanagement -Tool) installiert werden. Nach der Installation können Sie RedbeanPhp einrichten, indem Sie die RedbeanPhp -Datei in das Skript aufnehmen und eine Datenbankverbindung einrichten. RedbeanPhp erstellt und modifiziert Tabellen automatisch basierend auf Ihren Objekten.

Was ist "Streaming -Modus" in RedbeanPhp?

Streaming -Modus ist eine Funktion von RedbeanPhp, mit der das Datenbankschema automatisch angepasst werden kann, wenn sich Objekte ändern. Dies kann während der Entwicklung viel Zeit sparen, da Sie die Datenbank nicht jedes Mal manuell ändern müssen, wenn Sie das Objekt ändern. Es wird jedoch empfohlen, aus Leistung und Sicherheitsgründen in den "Freeze -Modus" in Produktionsumgebungen zu wechseln.

Wie geht RedbeanPhp mit Beziehungen zwischen Objekten um?

RedbeanPhp unterstützt mehrere Beziehungstypen zwischen Objekten, darunter eins zu eins, eins zu viele und viele zu viele. Diese Beziehungen werden mit "Bean" verwaltet (ein einfaches Objekt, das Zeilen in einer Datenbanktabelle darstellt). Sie können Bohnen leicht miteinander in Verbindung bringen, um Beziehungen zwischen Objekten darzustellen.

Kann ich RedbeanPhp mit meiner vorhandenen Datenbank verwenden?

Ja, RedbeanPhp kann mit vorhandenen Datenbanken verwendet werden. Bitte beachten Sie jedoch, dass die automatische Modifikationsfunktion von RedBeanPhP die Datenbankstruktur ändern kann. Daher wird empfohlen, die Datenbank vor der Verwendung von RedbeanPhp zu sichern.

Ist RedbeanPhp für große und komplexe Projekte geeignet?

Während RedbeanPhp für seine Einfachheit und Benutzerfreundlichkeit bekannt ist, bietet es auch leistungsstarke Funktionen, die es auch für große und komplexe Projekte geeignet machen. Die automatische Modifikation der Modus, die Unterstützung verschiedener Beziehungstypen und die integrierte Baumstruktur sind in großen Projekten sehr nützlich. Für sehr große oder komplexe Projekte kann jedoch ein umfassenderes ORM -Tool besser geeignet sein.

Wie geht RedbeanPhp mit Sicherheit um?

RedbeanPhp enthält mehrere Funktionen zur Verbesserung der Sicherheit. Es verwendet Vorverarbeitungsanweisungen, um SQL -Injektionsangriffe zu verhindern, und empfiehlt, den "Freeze -Modus" in der Produktion zu verwenden, um unerwartete Schemaänderungen zu verhindern. Wie bei jedem Tool ist es jedoch wichtig, die Best Practices der Sicherheitsversicherung zu befolgen und RedbeanPhp auf dem neuesten Stand zu halten.

Was ist "Bean Can" in RedbeanPhp?

Bean Canning ist eine Funktion von RedbeanPhp, mit der Sie die gesamte Bean (Objekt) gleichzeitig speichern und abrufen können. Dies kann eine bequeme Möglichkeit sein, große Datenmengen zu verarbeiten, und kann auch dazu beitragen, die Leistung zu verbessern, indem die Anzahl der Datenbankabfragen reduziert wird.

Kann ich RedbeanPhp ohne Komponist verwenden?

Während Composer die empfohlene Methode zur Installation von RedbeanPhp ist, können Sie auch RedbeanPhp -Dateien direkt in Ihr Skript herunterladen und einbeziehen. Durch die Verwendung von Composer erleichtert es jedoch einfacher, RedbeanPhp und andere Abhängigkeiten zu verwalten und zu aktualisieren.

Das obige ist der detaillierte Inhalt vonEinführung in Redbean. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn