Heim >Backend-Entwicklung >PHP-Tutorial >Einführung in Redbean
Kernpunkte
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
verteilenDer 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
:
<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
:
<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
<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()
:
<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:
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!