Redbeanの紹介

Jennifer Aniston
Jennifer Anistonオリジナル
2025-02-23 08:27:09854ブラウズ

Introduction to Redbean

コアポイント

  • RedBeanPhpは、基礎となるデータベーススキーマを動的に作成および変更できるORM(オブジェクトリレーショナルマッパー)です。これは、プロトタイプ化と開発に最適です。
  • RedBeanPHPを使用すると、オブジェクト(または「Bean」)を作成してデータベースに保存できます。また、対応するテーブルがない場合でも、パターンを自動的に調整して適応します。
  • RedbeanPhpは、1対1、1対多、および多くの関係を含む、関連するオブジェクトを「所有」するという概念を通じて、オブジェクト間の関係をサポートします。
  • RedbeanPhpの「ストリーミングモード」により、オブジェクトが変更されたときにデータベーススキーマの自動調整が可能になりますが、パフォーマンスとセキュリティを改善するために生産中に「フローズンモード」に切り替えることをお勧めします。

redbeanphpの紹介

迅速なアプリケーション開発(RAD)およびプロトタイピングでは、すぐに開始するのに役立つ多くのツールがあります。クイックスタートからミニフレームワークまで、作曲家などのビルドツールからワンクリックインストーラー、そしてもちろんORMまで、開発をスピードアップする方法がたくさんあります。プロトタイピングに最適なユニークなORMであるRedbeanPhpに焦点を当てます。

redbeanphpの初心者RedbeanPhpはORM(オブジェクトリレーショナルマッパー)ですが、単なるORM以上のものです。基礎となるデータベーススキーマを動的に作成および変更できます。従来、ORMは、事前に計画された既存のデータベーススキーマのラッパーとして使用していました。これはほとんどのプロジェクトでは問題ありませんが、プロトタイピング(またはそれをしている間に考えている)を行っている場合、バックグラウンドでそれを実行することはさらに高速化できます。

インストール

redbeanphpをインストールする最も簡単な方法は、オールインワンパッケージをダウンロードすることです。次に、単一のファイルを導入する必要があります

作曲家を介してインストールすることもできますが、ライブラリの著者はこの方法を推奨していません。詳細については、インストールページを参照してください。

rb.php

bean

を配布します

redbeanphpを使用する最初のステップは、豆を「分配」することです。これは基本的にオブジェクトです。この記事の残りの部分では、「Bean」とオブジェクトを同じ意味で使用していることに注意してください。 分布は、型をパラメーターとして取得する上部レッドビーンクラス「R」の静的方法によって行われます。

例:

これにより、プロパティを割り当てることができる空のユーザーオブジェクトが作成されます。また、必要な番号を2番目のパラメーターとして追加することにより、複数の豆を同時に配布することもできます。

この段階では、保存しようとする限り、テーブルがデータベースに存在するかどうかは関係ありません。

試してみましょう - データベースへの書き込みに使用される静的メソッドの使用に注意してください:store

<code class="language-php">$user = R::dispense('user');</code>
ほとんどのORMでは、ユーザーを保存するためのテーブルを作成していない場合、これは失敗します。ただし、RedbeanPhpを使用すると、これはあなたのためにテーブルを作成するため成功します。この段階でデータベースを見ると、次のようなテーブルが表示されます。

命名規則は、指定したタイプの特異な小文字の表現であるため、非常に厳しいものです。
<code class="language-php">$users = R::dispense('user', 10);</code>

ここで、反復中にパターンがどのように変化するかを見てみましょう。ユーザーレコードにはパスワードフィールドが必要になる場合がありますが、それらを作成するのを忘れていました。

これを行う場合:

今回は、RedBeanPhpはユーザーを保存する方法を知っていますが、データベーステーブルは新しいフィールドに対応できません。それは大丈夫です - それはただ追加します、あなたのパフォーマンスは次のようになります:
<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>
(次のコンテンツは元のテキストに似ていますが、文の構造と単語の調整が行われ、画像の位置と形式は変更されていません)

フィールドデータ型

RedBeanPHPは、提供した情報に基づいてフィールドのデータ型を推測しようとします。したがって、もしそうなら:

年齢分野はTinyintとして作成されていることがわかります。
<code class="language-php">$user->password = 'secret';
R::store($user);</code>

フィールドタイプが後で不十分な場合、RedBeanPHPは動的に変更します。 3000を年齢に割り当てようとすると、列がintに変更されます。名前を「30」と綴ると、Varcharに変更されます。 Varcharフィールドを255文字以上に設定すると、テキストフィールドなどになります。

bean

を見つけます

メソッドを使用して、プライマリキーによって特定のオブジェクトをロードできます。

load

メソッドを使用して複数のオブジェクトを一度にロードできます(プライマリキーを押します):
<code>user
----

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

batchこれにより、豆の配列が返されます。

<code class="language-php">$user->age = 30;
R::store($user);</code>
SQLを使用して豆を見つけることもできます。

メソッドの2番目のパラメーターは、本質的にsqlで、Whereキーワード自体を除く句から始まります。たとえば、20歳未満のユーザーを見つけるには:

findパラメーターを結合しているため、3番目のパラメーターは配列であることに注意してください。これにより、IDをキーとして使用して豆の配列が返されます。

<code class="language-php">$user = R::load('user', 1);</code>
次のようなSQLにさらに条項を追加できます。

count

メソッドを使用して、レコードの数を見つけることができます:

削除count

単一の豆を削除するには、
<code class="language-php">$users = R::batch('user', array(1, 2, 3));</code>

を使用します

特定のタイプの複数の豆を削除するには、trash

を使用します
<code class="language-php">$users = R::find('user', 'age < 20');</code>

特定のタイプのすべての豆を削除するには、trashAll

を使用します
<code class="language-php">$number_of_users = R::count('user');</code>

または、すべてを削除するには - これはプロトタイプ化するときに役立つことがあります。 wipe

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

任意のORMと同様に、オブジェクト間の関係がサポートされています。 nuke

1対多くの関係を使用して、関連するオブジェクトを「所有」するという概念を参照します。たとえば、注文に1人のユーザーのみがいる場合、ユーザーは注文と呼ばれます。特定の変数名を使用することにより、このようなこの関係を作成できます。

<code class="language-php">$user = R::dispense('user');</code>
ここでの重要な要素は属性

です。今すぐデータベースを確認すると、RedBeanPhpが対応する外部キーとともに、注文テーブルにフィールドを追加したことがわかります。 ownOrders 注文を「所有」するユーザーは、属性として単純にアクセスできます。たとえば、user_id

多くの関係を示すために、いくつかのキャラクターを作成しましょう:

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

ロールは、個々のユーザーだけではありません。したがって、最初の2つのロールをユーザーに割り当て、そうするときにデータベースに関係を確立するために、これを行うことができます。

<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>
今回は、この関係を多目的な関係として定義する

という新しいテーブルを見つける必要があります。

<code>user
----

id      int(11) UN PK AI
name    varchar(255)
email   varchar(255)</code>
属性を読むことでユーザーに属する役割を得ることができます:

role_user

これにより、初めてアクセスしたときに役割の負荷が遅れます。

関係には、
<code class="language-php">$user->password = 'secret';
R::store($user);</code>
を使用した関係に属性を追加すること、リンクごとのフィルタリング、緊急の読み込みなどが含まれます。詳細については、ドキュメントを確認してください。

モデル

link Beanタイプに対応するモデルを作成できます。特定の命名規則に従ってください。モデルは、ヒューズを使用して豆に接続します。つまり、関連する命名規則に従って融合します。

コンベンションは単純です。たとえば、ユーザーのモデルを作成するには、次のことを行う必要があります。

モデルを定義した後、Beanのライフサイクルで異なるポイントで呼び出される多くの方法を実装できます。次の表は、CRUD操作と実装できる「フック」のマッピングを示しています。

たとえば、

update()

を実装して検証を追加できます。
<code class="language-php">$user = R::dispense('user');</code>
もちろん、ゲッターをカスタマイズするだけでなく、独自の方法を作成することもできます。

Queryデータベース

このような元のsqlクエリを実行できます:

<code class="language-php">$users = R::dispense('user', 10);</code>
このような行の多次元配列を返すことができます:

さらに、パラメーターバインディング:
<code class="language-php">$user->name = 'Joe Bloggs';
$user->email = 'joe.bloggs@example.com';
$id = R::store($user);
print $id;</code>
を使用できます

次のような単一の列を取得できます:
<code>user
----

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

テーブルの2つの列を使用して連想配列を取得することもできます。
<code class="language-php">$user->password = 'secret';
R::store($user);</code>

アプリケーションを展開

<code>user
----

id          int(11) UN PK AI
name        varchar(255)
email       varchar(255)
password    varchar(255)</code>
間違いなくプロトタイピング(または少なくとも開発)に最適ですが、特定の手順に従うことができますが、RedBeanPHPが生産環境で使用され続けない理由はありません。

RedBeanPHPダイナミック更新モードのメカニズムは「ストリーミングモード」と呼ばれますが、これは生産環境には適しておらず、かなりのパフォーマンスがあります。ただし、「フリーズ」することでオフにすることができます:

生産に入るとき、次の手順に従う必要があります。

<code class="language-php">$user->age = 30;
R::store($user);</code>
列データ型を確認してください

外国の鍵と関係を確認してください
  • インデックスを確認します-RedBeanPHPはいくつかのインデックスを作成し、必要に応じてそれらを変更します
  • 要約
  • この記事では、RedBeanPhpを紹介しました。これは、基礎となるパターンを最初に構築することなくドメインモデルを処理できるようにすることで、開発プロセスを開始する便利な方法です。生産環境に適しているかどうかはまだわかりませんが、プロトタイプと迅速な反復のための素晴らしいガジェットです。私はあまりカバーしていないので、ドキュメントをチェックしてください。
redbeanphp faq

redbeanphpの主な機能は何ですか?

RedBeanPhpは、データベースの相互作用を簡素化するために設計されたさまざまな機能を提供するシンプルで軽量のオブジェクトリレーショナルマッピング(ORM)ツールです。 「ゼロ構成」アプローチで知られています。つまり、最小限のセットアップと構成のみが必要です。作成したオブジェクトに基づいてデータベーススキーマを自動的に構築し、オブジェクトが変更されたときに必要に応じてスキーマを調整できます。 RedBeanPHPは、ストリーミングモードと凍結モードもサポートしているため、開発環境と生産環境を簡単に切り替えることができます。組み込みのツリー構造が含まれており、オブジェクトを簡単に保存して検索するためのBean CanningとDistributionをサポートします。

RedBeanPhpは他のORMツールとどのように比較されますか?

他のORMツールと比較して、RedBeanPHPはその単純さと使いやすさで際立っています。構成ファイル、SQL、またはモデルクラスは必要ありません。これにより、フル機能のORMが冗長に見える初心者やプロジェクトに最適です。ただし、自動モードの変更やツリー構造などの強力な機能を提供しているため、より複雑なプロジェクトで十分です。

redbeanphpをインストールしてセットアップする方法は?

RedBeanPhpは、Composer(人気のあるPHP依存性管理ツール)を介してインストールできます。インストール後、RedBeanPHPファイルをスクリプトに含めてデータベース接続を設定することにより、RedBeanPHPをセットアップできます。 RedBeanPhpは、オブジェクトに基づいてテーブルを自動的に作成および変更します。

redbeanphpの「ストリーミングモード」とは何ですか?

ストリーミングモードは、オブジェクトが変更されたときにデータベーススキーマを自動的に調整できるRedBeanPHPの機能です。オブジェクトを変更するたびにデータベースを手動で変更する必要がないため、開発中に多くの時間を節約できます。ただし、パフォーマンスと安全上の理由から、生産環境で「フリーズモード」に切り替えることをお勧めします。

redbeanphpはオブジェクト間の関係をどのように処理しますか?

RedbeanPhpは、1対1、1対多、および多数のオブジェクト間のいくつかの関係タイプをサポートしています。これらの関係は、「Bean」(データベーステーブルの行を表す単純なオブジェクト)を使用して処理されます。オブジェクト間の関係を表すために、豆を互いに簡単に関連付けることができます。

既存のデータベースでredbeanphpを使用できますか?

はい、redbeanphpは既存のデータベースで使用できます。ただし、RedBeanPHPの自動モード変更機能はデータベース構造を変更する可能性があるため、RedBeanPHPを使用する前にデータベースをバックアップすることをお勧めします。

redbeanphpは大規模で複雑なプロジェクトに適していますか?

RedbeanPhpはその単純さと使いやすさで知られていますが、大規模で複雑なプロジェクトにも適した強力な機能を提供します。その自動モードの変更、さまざまな関係タイプのサポート、および組み込みのツリー構造はすべて、大規模なプロジェクトで非常に役立ちます。ただし、非常に大規模または複雑なプロジェクトでは、より包括的なORMツールがより適切になる場合があります。

RedbeanPhpはセキュリティをどのように処理しますか?

RedBeanPhpには、セキュリティを強化するために設計されたいくつかの機能が含まれています。前処理ステートメントを使用してSQL注入攻撃を防ぐのに役立ち、生産で「フリーズモード」を使用して予期しないスキーマの変更を防ぐことをお勧めします。ただし、他のツールと同様に、セキュリティのベストプラクティスに従い、RedBeanPHPを最新の状態に保つことが重要です。

redbeanphpの「bean can」とは何ですか?

Bean Canningは、一度に設定されたBean(オブジェクト)全体を保存および取得できるRedbeanPhpの機能です。これは、大量のデータを処理するための便利な方法であり、データベースクエリの数を減らすことでパフォーマンスを改善するのにも役立ちます。

作曲家なしでredbeanphpを使用できますか?

ComposerがRedBeanPHPをインストールするための推奨方法ですが、RedBeanPHPファイルをスクリプトに直接ダウンロードして含めることもできます。ただし、Composerを使用すると、RedbeanPhpやプロジェクトが持つ可能性のあるその他の依存関係を簡単に管理および更新できます。

以上がRedbeanの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。