| レッドビーンPHP | |
|---|---|
| 安定版リリース | 5.7 / 2021年4月3日 ( 2021-04-03 ) |
| リポジトリ | |
| 書かれた | PHP |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | オブジェクトリレーショナルマッピングライブラリ |
| ライセンス | BSD GPLv2 |
| Webサイト | redbeanphp.com |
RedBeanPHPは、 Gabor de Mooijによって開発された、独立したBSDライセンスに基づくオープンソースのオブジェクト・リレーショナル・マッピング(ORM)ソフトウェアです。これはスタンドアロンのライブラリであり、いかなるフレームワークにも属しません。RedBeanPHPはオンザフライのオブジェクト・リレーショナル・マッパーであるため、事前の設定は不要です。システムは完全に規約に準拠し、プログラムのニーズに合わせてデータベーススキーマを調整します。これにより、NoSQLと従来のRDBMSソリューションのバランスが取れています。
RedBeanPHP は、 XML、YAML、JSONでの設定が不要なため、他のORMシステムとは異なります。プログラムのニーズに基づいてデータベース スキーマを適応させます。すべてのテーブルと列は、事前の設定やマッピングなしで、オンザフライで作成されます。必要に応じてテーブルに列を自動的に追加し、コンテンツの要件に合わせて列の型を変更します。開発者が開発を終え、スキーマの変更が不要になったら、スキーマを凍結して運用環境にデプロイできます。データベースを凍結した後は、スキーマの変更は行われません。テーブル間のリレーションシップも同様に、つまり規約に従ってマッピングされます。たとえば、2 つのテーブル間に 1 対多の関係を作成するには、ターゲット テーブルの名前を持つプロパティに配列を割り当てます。これにより、テーブルと必要な列が自動的に作成されます。
単純なCRUD操作と関係を示すコード例:
R :: setup (); $movie = R :: dispense ( 'movie' ); $movie -> title = 'Beans in space' ; $character = R :: dispense ( 'character' ); $character -> name = 'hero' ; $movie -> ownCharacterList [] = $character ; $id = R :: store ( $movie );RedBeanPHPは、ORMに対してオンザフライアプローチを採用した最初のライブラリとして知られています。そのため、他のライブラリに大きな影響を与えました。RedBeanPHPは、他の多くのプロジェクトにこのオブジェクトマッピングアプローチを採用するきっかけを与えました。同様のライブラリは、.NET、[ 1 ] 、 Python、[ 2 ] 、 JavaScript、[ 3 ] 、 Java、[ 4 ] 、 Erlang、[ 5 ] 、 ColdFusion [ 6 ] 、 Objective-C [ 7 ]向けにも登場しています。
独立したライブラリでありながら、Laravel、[ 8 ] CodeIgniter、[ 9 ] Kohana、[ 10 ] Silex [ 11 ] Zend Framework [ 12 ]などの様々な人気フレームワーク向けにプラグインモジュールが開発されています。統合モジュールに加えて、Nibble FrameworkのようにRedBeanPHPがすぐに使用できるフレームワークもあります。[ 13 ]
RedBeanPHPは2009年にGitHubで初めて登場しました。[ 14 ]最初に公開されたバージョンは0.3.3でした。RedBeanPHPは、オランダのソフトウェア開発者であるGabor de Mooijによって開発されました。RedBeanPHPは非常にアクセスしやすく、 SQL言語を隠さないため、大学ではデータベースプログラミングの教育に使用されています。[ 15 ] Gabor自身のフォーラム投稿によると、このライブラリは、Ted Newardによる「ORM、コンピュータサイエンスのベトナム」と呼ばれるオブジェクトリレーショナルマッピングシステムに関する批判に触発されたとのことです。 [ 16 ] [ 17 ]
ウェブ上で入手可能なレビューやプレゼンテーションに基づくと、RedBeanPHP の全体的な評価は肯定的であるようです。[ 18 ] [ 19 ] [ 20 ] [ 21 ]しかし、このライブラリは既存のデータベースを持つプロジェクトにはあまり適しておらず、カスタムテーブルと列のマッピングをサポートしていません。たとえば、テーブルプレフィックスを使用することはできません。[ 22 ]また、主要なフレームワークのいずれもこのライブラリを組み込んでいません。