Maison > développement back-end > tutoriel php > Introduction à Redbean

Introduction à Redbean

Jennifer Aniston
Libérer: 2025-02-23 08:27:09
original
858 Les gens l'ont consulté

Introduction to Redbean

Points de base

  • RedbeanPHP est un ORM (mappeur relationnel d'objet) qui peut créer et modifier dynamiquement les schémas de base de données sous-jacents, ce qui est idéal pour le prototypage et l'accélération du développement.
  • redbeanphp vous permet de créer un objet (ou "bean") et de l'enregistrer dans une base de données, et il ajuste automatiquement le modèle pour s'adapter même s'il n'y a pas de table correspondante.
  • RedbeanPHP prend en charge les relations entre les objets à travers le concept de "posséder" des objets liés, y compris des relations individuelles, un à plusieurs et plusieurs à plusieurs.
  • "Mode de streaming" de RedbeanPHP permet un réglage automatique du schéma de base de données lorsque les objets changent, mais il est recommandé de passer en "mode gelé" en production pour améliorer les performances et la sécurité.
  • Bien que RedbeanPHP soit un excellent outil de prototypage et d'itération rapide, une prudence est également requise lorsqu'elle est utilisée dans les environnements de production, tels que la vérification des types de données de colonne, des clés étrangères, des relations et des index.

Introduction à redbeanphp

Dans le développement rapide des applications (RAD) et le prototypage, il existe de nombreux outils pour vous aider à démarrer rapidement. Des départs rapides aux mini-cadres, des outils de construction comme le compositeur aux installateurs en un clic, et bien sûr ORM - il existe de nombreuses façons d'accélérer le développement. Nous nous concentrerons sur RedbeanPHP, un ORM unique qui est parfait pour le prototypage.

débutant de redbeanphp

RedbeanPHP est un ORM (mappeur relationnel d'objet), mais c'est plus qu'un simple ORM - il peut créer et modifier dynamiquement le schéma de base de données sous-jacent. Traditionnellement, vous utiliseriez ORM comme emballage pour les schémas de base de données pré-planifiés et préexistants. C'est OK pour la plupart des projets, mais lorsque vous prototypant (ou pensez en le faisant), le faire pour vous en arrière-plan peut accélérer davantage.

Lorsque vous créez un objet (ou bean) avec RedbeanPHP, le schéma s'ajustera automatiquement pour s'adapter tant que vous l'enregistrez dans la base de données. Cela s'applique même si vous essayez d'enregistrer un objet qui n'a pas de table correspondante!

Installation

La façon la plus simple d'installer RedbeanPHP est de télécharger le package tout-en-un. Ensuite, il vous suffit d'introduire un seul fichier rb.php.

Vous pouvez également l'installer via le compositeur;

Distribuez le bean

La première étape de l'utilisation de RedbeanPHP consiste à "distribuer" un bean - c'est essentiellement un objet. Notez que pour le reste de cet article, j'utilise "Bean" et objets de manière interchangeable.

La distribution

est effectuée par la méthode statique de la classe Redbean supérieure "R", qui prend le type en tant que paramètre.

Exemple:

$user = R::dispense('user');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cela créera un objet utilisateur vide à laquelle vous pouvez attribuer des propriétés. Vous pouvez également distribuer plusieurs haricots simultanément en ajoutant le nombre requis comme deuxième paramètre:

$users = R::dispense('user', 10);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

À ce stade, peu importe si un tableau existe dans la base de données pour l'enregistrer; tant que nous essayons de le stocker, RedbeanPhp le gérera.

Essayons-le - veuillez noter l'utilisation de la méthode statique store, qui est utilisée pour écrire dans la base de données:

$user = R::dispense('user');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans la plupart des orms, cela échoue si vous n'avez pas créé de table pour enregistrer l'utilisateur. Cependant, avec RedbeanPHP, cela réussira car cela créera le tableau pour vous. Si vous regardez votre base de données à ce stade, vous devriez voir une table comme ceci:

$users = R::dispense('user', 10);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

La convention de dénomination est très stricte en raison du besoin; il s'agit d'une représentation minuscule singulière du type que vous spécifiez.

Voyons maintenant comment le modèle change tout en itérant. Les enregistrements des utilisateurs peuvent nécessiter un champ de mot de passe - mais nous avons oublié de les créer.

si vous faites ceci:

$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette fois, RedbeanPHP sait stocker les utilisateurs, mais la table de base de données ne peut pas s'adapter à de nouveaux champs. C'est OK - il en ajoute juste un, vos performances ressemblent à ceci:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

(Le contenu suivant est similaire au texte d'origine, mais la structure de la phrase et les ajustements des mots ont été effectués, et la position et le format de l'image sont maintenus inchangés)

Type de données de champ

RedbeanPHP essaiera de deviner le type de données du champ en fonction des informations que vous fournissez. Donc, si vous le faites:

$user->password = 'secret';
R::store($user);
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous constaterez que le champ d'âge a été créé comme minuscule.

Si le type de champ est insuffisant plus tard, RedbeanPHP le changera dynamiquement. Si vous essayez maintenant d'attribuer 3000 à l'âge, la colonne sera changée en int. Si vous épelez le nom comme "trente", il changera pour varchar. Définissez le champ Varchar sur plus de 255 caractères, il deviendra un champ de texte, etc.

Trouver le bean

Vous pouvez utiliser la méthode load pour charger un objet spécifique par clé primaire:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez utiliser la méthode batch pour charger plusieurs objets à la fois (appuyez sur la touche primaire):

$user->age = 30;
R::store($user);
Copier après la connexion
Copier après la connexion

Cela renverra un tableau de haricots.

Vous pouvez également utiliser SQL pour trouver des haricots. Le deuxième paramètre de la méthode find est essentiellement SQL en commençant par la clause WHERE, à l'exclusion du mot-clé Where lui-même. Par exemple, pour trouver des utilisateurs de moins de 20 ans:

$user = R::load('user', 1);
Copier après la connexion

Notez que nous lions les paramètres, donc le troisième paramètre est un tableau. Cela renverra un tableau de haricots utilisant son ID comme clé.

Vous pouvez ajouter plus de clauses à SQL, telles que:

Count

Vous pouvez utiliser la méthode count pour trouver le nombre d'enregistrements:

$users = R::batch('user', array(1, 2, 3));
Copier après la connexion

supprimer

Pour supprimer un seul haricot, utilisez trash:

$users = R::find('user', 'age < 20');
Copier après la connexion

Pour supprimer plusieurs haricots d'un type spécifique, utilisez trashAll:

$number_of_users = R::count('user');
Copier après la connexion

Pour supprimer tous les grains d'un type spécifique, utilisez wipe:

R::trash($user);
Copier après la connexion

ou, pour tout supprimer - cela peut être utile lors du prototypage - vous pouvez utiliser nuke:

R::trashAll('user');
Copier après la connexion

relation

Comme tout ORM, la relation entre les objets est prise en charge.

Les relations un-à-plusieurs utilisent le concept de «posséder» des objets liés à la référence. Par exemple, si la commande n'a qu'un seul utilisateur, l'utilisateur est appelé «propre» les commandes. En utilisant des noms de variables spécifiques, nous pouvons créer cette relation comme ceci:

$user = R::dispense('user');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

L'élément clé ici est l'attribut ownOrders. Si vous vérifiez votre base de données maintenant, vous devez constater que RedbeanPHP a ajouté le champ user_id à la table de commande, ainsi que les touches étrangères correspondantes.

Les utilisateurs qui "possèdent" l'ordre peuvent simplement accéder en tant qu'attributs, par exemple:

$users = R::dispense('user', 10);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

pour démontrer une relation plusieurs à plusieurs, créons certains personnages:

$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;
Copier après la connexion
Copier après la connexion
Copier après la connexion
Les rôles

ne sont pas seulement des utilisateurs individuels; Ainsi, pour attribuer les deux premiers rôles à l'utilisateur et établir une relation dans la base de données, nous pouvons le faire:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette fois, vous devriez trouver un nouveau tableau appelé role_user qui définit cette relation comme une relation plusieurs à plusieurs.

Vous pouvez obtenir le rôle qui appartient à l'utilisateur en lisant l'attribut:

$user->password = 'secret';
R::store($user);
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cela retarde le chargement des rôles la première fois qu'ils sont accessibles.

Les relations y ont beaucoup plus, y compris l'ajout d'attributs aux relations utilisant link, le filtrage par lien, le chargement urgent, etc. - Veuillez vérifier la documentation pour plus de détails.

modèle

Vous pouvez créer des modèles pour correspondre aux types de haricots, suivez simplement certaines conventions de dénomination. Le modèle se connecte ensuite au haricot à l'aide du fusible;

La convention est simple; utilisez des soulignements pour séparer le "modèle" du type, tel que Model_Type. Par exemple, pour créer un modèle pour un utilisateur, il vous suffit de faire ce qui suit:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Après avoir défini le modèle, vous pouvez implémenter de nombreuses méthodes qui seront appelées à différents moments du cycle de vie du haricot. Le tableau suivant illustre le mappage entre l'opération CRUD et le "crochet" que vous pouvez implémenter:

Par exemple, vous pouvez ajouter la validation en implémentant update():

$user = R::dispense('user');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez bien sûr également créer vos propres méthodes ainsi que personnaliser les getters.

Base de données de requête

Vous pouvez exécuter la requête SQL d'origine comme ceci:

$users = R::dispense('user', 10);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez retourner un tableau multidimensionnel de lignes comme ceci:

$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;
Copier après la connexion
Copier après la connexion
Copier après la connexion

De plus, vous pouvez utiliser la liaison des paramètres:

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez obtenir une seule colonne comme ceci:

$user->password = 'secret';
R::store($user);
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez également obtenir le tableau associatif en utilisant deux colonnes de la table:

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Déployez votre application

Bien qu'il soit sans doute le meilleur pour le prototypage (ou au moins le développement) - vous pouvez suivre certaines étapes, il n'y a aucune raison pour que RedbeanPHP ne puisse pas continuer à être utilisé dans des environnements de production.

Le mécanisme du mode de mise à jour dynamique de RedBeanPHP est appelé "mode de streaming"; Cependant, vous pouvez le désactiver en le «congelant»:

$user->age = 30;
R::store($user);
Copier après la connexion
Copier après la connexion

Lorsque vous entrez en production, vous devez suivre les étapes suivantes:

  • Vérifier le type de données de colonne
  • Vérifiez les clés et relations étrangères
  • Vérifiez l'index - RedbeanPHP créera certains index - et les modifiera selon les besoins

Résumé

Dans cet article, j'ai introduit RedbeanPHP, un moyen pratique de démarrer votre processus de développement en vous permettant de traiter d'abord les modèles de domaine sans avoir à construire le modèle sous-jacent. Il reste à voir s'il est adapté aux environnements de production - mais c'est un excellent gadget pour le prototypage et l'itération rapide. Je ne couvre pas beaucoup, alors assurez-vous de consulter la documentation.

redbeanphp faq

Quelles sont les principales fonctions de RedbeanPHP?

RedbeanPHP est un outil de cartographie d'objet-relation léger et léger (ORM) qui fournit une gamme de fonctionnalités conçues pour simplifier l'interaction de la base de données. Il est connu pour son approche "Configuration zéro", ce qui signifie qu'elle ne nécessite que une configuration et une configuration minimales. Il construit automatiquement le schéma de base de données en fonction des objets que vous créez et peut ajuster le schéma selon les besoins lorsque l'objet change. RedbeanPHP prend également en charge le mode de streaming et le mode de congélation, vous permettant de basculer facilement entre les environnements de développement et de production. Il comprend une structure d'arbre intégrée et prend en charge la mise en conserve et la distribution des haricots pour un stockage et une récupération faciles d'objets.

Comment RedbeanPHP se compare-t-il aux autres outils ORM?

Par rapport aux autres outils ORM, RedbeanPHP se distingue par sa simplicité et sa facilité d'utilisation. Il ne nécessite pas de fichiers de configuration, de classes SQL ou de modèle. Cela en fait un excellent choix pour les débutants ou les projets où l'ORM complet semble redondant. Cependant, il offre toujours des fonctionnalités puissantes telles que la modification automatique du mode et la structure des arbres, ce qui le rend suffisant pour des projets plus complexes.

Comment installer et configurer RedbeanPHP?

RedbeanPHP peut être installé via Composer (un outil de gestion de dépendance PHP populaire). Après l'installation, vous pouvez configurer RedBeanPHP en incluant le fichier RedBeanPHP dans le script et en configurant une connexion de base de données. RedbeanPHP créera et modifiera automatiquement les tables en fonction de vos objets.

Qu'est-ce que le "mode de streaming" dans redbeanphp?

Le mode de streaming est une caractéristique de RedbeanPHP qui lui permet d'ajuster automatiquement le schéma de base de données lorsque les objets changent. Cela peut gagner beaucoup de temps pendant le développement car vous n'avez pas à modifier manuellement la base de données chaque fois que vous modifiez l'objet. Cependant, il est recommandé de passer en "mode gel" dans les environnements de production pour des raisons de performance et de sécurité.

Comment RedbeanPHP gère-t-il les relations entre les objets?

RedbeanPHP prend en charge plusieurs types de relations entre les objets, notamment un à un, un à plusieurs et plusieurs à plusieurs. Ces relations sont gérées en utilisant "Bean" (un objet simple représentant des lignes dans une table de base de données). Vous pouvez facilement s'associer les haricots les uns aux autres pour représenter les relations entre les objets.

Puis-je utiliser RedbeanPHP avec ma base de données existante?

Oui, RedbeanPHP peut être utilisé avec les bases de données existantes. Cependant, veuillez noter que la fonction de modification du mode automatique de RedbeanPHP peut modifier la structure de la base de données, il est donc recommandé de sauvegarder la base de données avant d'utiliser RedbeanPHP.

RedbeanPHP convient-il aux projets importants et complexes?

Bien que RedbeanPHP soit connu pour sa simplicité et sa facilité d'utilisation, il offre également des fonctionnalités puissantes qui le rendent également adapté à des projets grands et complexes. Sa modification de mode automatique, la prise en charge de divers types de relations et sa structure d'arborescence intégrée sont toutes très utiles dans les grands projets. Cependant, pour des projets très grands ou complexes, un outil ORM plus complet peut être plus approprié.

Comment RedbeanPHP gère-t-il la sécurité?

redbeanphp contient plusieurs fonctionnalités conçues pour améliorer la sécurité. Il utilise des instructions de prétraitement pour aider à prévenir les attaques d'injection SQL et recommande d'utiliser le "mode de gel" en production pour empêcher les changements de schéma inattendus. Cependant, comme pour n'importe quel outil, il est important de suivre les meilleures pratiques de sécurité et de maintenir RedbeanPHP à jour.

Qu'est-ce que "Bean Can" dans RedbeanPHP?

La mise en conserve du haricot est une caractéristique de RedbeanPHP qui vous permet de stocker et de récupérer l'ensemble du haricot (objet) en même temps. Cela peut être un moyen pratique de gérer de grandes quantités de données, et peut également aider à améliorer les performances en réduisant le nombre de requêtes de base de données.

Puis-je utiliser RedbeanPHP sans compositeur?

Bien que le compositeur soit la méthode recommandée pour installer RedbeanPHP, vous pouvez également télécharger et inclure des fichiers RedbeanPHP directement dans votre script. Cependant, l'utilisation du compositeur facilite la gestion et la mise à jour de RedbeanPHP et toutes les autres dépendances qu'un projet peut avoir.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal