回答:
Doctrineを調べてください。
Doctrine 1.2はActive Recordを実装しています。Doctrine 2+はDataMapper ORMです。
また、Xysterも確認してください。これは、Data Mapperパターンに基づいています。
また、DataMapperとActive Recordを比較してください。
RedBeanを試してください。
さらに、すべてのロックとトランザクションを実行し、バックグラウンドでパフォーマンスを監視します。(ヘック!ガベージコレクションも実行します。...)何よりも... 1行のコードを書く必要はありません...コード行...イエスこれ、ORMレイヤーは、私を助けてくれました!
DoctrineとPropelの 2つだけ良いものがあります。私たちはDoctrineを支持しており、それはSymfonyでうまく動作します。ただし、主要なサポート以外のデータベースサポートを探している場合は、独自のコードを記述する必要があります。
Axon ORMはFat-Free Frameworkの一部です-オンザフライマッパーを備えています。コードジェネレータはありません。愚かなXML / YAML構成ファイルは。データベーススキーマをバックエンドから直接読み取るため、ほとんどのCRUD操作では、ベースモデルを拡張する必要すらありません。MySQL、SQLite、SQL Server / Sybase、Oracle、PostgreSQLなど、すべての主要なPDO対応データベースエンジンで動作します。
/* SQL */
CREATE TABLE products (
product_id INTEGER,
description VARCHAR(128),
PRIMARY KEY (product_id)
);
/* PHP */
// Create
$product=new Axon('products'); // Automatically reads the above schema
$product->product_id=123;
$product->description='Sofa bed';
$product->save(); // ORM knows it's a new record
// Retrieve
$product->load('product_id=123');
echo $product->description;
// Update
$product->description='A better sofa bed';
$product->save(); // ORM knows it's an existing record
// Delete
$product->erase();
とりわけ、プラグインと付随するSQLデータアクセスレイヤーは、フレームワークと同じくらい軽量です(14 KB(軸索)+ 6 KB(SQLdb))。Fat-Freeはわずか55 KBです。
$product->load('product_id=123')
例のようなものを見るといつも心配です。
$product->load(array('product_id=:id',array(':id'=>123)));
私は自分でPork.dbObjectを開発しています。(単純なPHP ORMとActive Recordの実装)主な理由は、ほとんどのORMが重すぎるということです。
Pork.dbObejctの主な考えは、軽量でセットアップが簡単であることです。XMLファイルの束はなく、それをバインドするためのコンストラクター内の1つの関数呼び出しと、別のdbObjectとの関係を定義するためのaddRelationまたはaddCustomRelationだけです。
見てみましょう:Pork.dbObject
試す Doctrine2を。これはおそらく、PHPの最も強力なORMツールです。完全に異なるソフトウェアであるため、Doctrine 1とは別に言及します。ゼロから書き直され、まだベータ段階ですが、現在使用可能で開発されています。
これは非常に複雑なORMですが、うまく設計されています。元のDoctrine 1の多くの魔法が消えました。それは完全なソリューションを提供し、Doctrine2の上に独自のORMを書くか、そのレイヤーの 1つだけを使用できます。
アウトレットORMをチェックしてください。これは、PropelやDoctrineよりもシンプルで、Hibernateと同じように機能しますが、より多くのPHPの感触があります。
IdiormとParisをチェックしてください。
PHP 5のオブジェクトリレーショナルマッパーであるdORMを試してください。あらゆる種類の関係(1対1)、(1対多)、(多対多)、およびデータ型をサポートしています。それは完全に控えめです:コード生成またはクラス拡張は必要ありません。私の意見では、DoctrineとPropelを含め、他のORMよりも優れています。ただし、まだベータ版であり、今後数か月で大幅に変更される可能性があります。http://www.getdorm.com
また、学習曲線も非常に小さくなっています。使用する主な3つの方法は次のとおりです。
<?php
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);
現在、phpDataMapperに取り組んでいます。これは、RubyのDatamapperプロジェクトのような単純な構文を持つように設計されたORMです。まだ開発の初期段階ですが、うまく機能します。
ORM of Flourishライブラリを試しました。
PHP 5.3リリースまでは、優れたORMが期待できません。これは、PHPのオブジェクト指向の制限です。
私の友人であるKienと私は、彼がPHP 5.3以前に作成したORMの以前のバージョンを改良しました。基本的に、Ruby on RailsのActive RecordをPHPに移植しました。トランザクション、複合主キーのサポート、いくつかのアダプターなど、私たちが必要とするいくつかの主要な機能がまだ不足しています(現在、MySQLとSQLite 3のみが機能します)。しかし、私たちはこれを仕上げるところです。PHP 5.3でPHP ActiveRecordを見ることができます。
PHP ADOdbを試してください。
他を使ったことがないので最高とは言えません。しかし、それは高速で、Memcachedをサポートしていますとキャッシングを。
また、Zend Frameworkの DB / Select よりも高速です。
コハナのLEAP ORMをご覧ください。DB2、Drizzle、Firebird、MariaDB、SQL Server、MySQL、Oracle、PostgreSQLなどの一連のデータベースで動作します、およびSQLiteの。シンプルなオートロード機能により、ほぼすべてのPHPフレームワークで動作します。ソースコードは、上にあるのGitHubでhttps://github.com/spadefoot/kohana-orm-leap。LEAPのチュートリアルをチェックアウトできますオンラインでます。
ORMライブラリは、整数以外の主キーと複合キーで機能します。接続はデータベース接続プールを介して管理され、生のSQLクエリで機能します。ORMには、SQLステートメントの構築を非常に簡単にするクエリビルダーもあります。
冒険したい場合は、休息をチェックしてください。Outletと同様に、Hibernateをモデルにしていますます。
それはまだ開発の非常に早い段階ですが、これまでのところドメインモデルに対する唯一の制限は、クラスが最終としてマークされておらず、プロパティがプライベートとしてマークされていないことです。PHP> = 5.3の領域に入ったら、プライベートプロパティのサポートも実装しようとします。
特にActive RecordではなくData Mapperパラダイムを実装するORMを探している場合は、GacelaPHPを参照することを強くお勧めします。
ガセラの特徴:
その他のORMソリューションは、肥大化しすぎたり、リモートで複雑なものを開発するときに厄介な制限があります。Gacelaは、データベースとMemcachedとのすべてのやり取りにPDOを使用して膨張を最小限に抑えながら、データマッパーパターンを実装することにより、アクティブレコードアプローチの制限を解決します。
ブラジルのORM:http : //www.hufersil.com.br/lumine。PHP 5.2以降で動作します。私の意見では、理解しやすいドキュメントとダウンロード用の多くの例があるため、ポルトガル語とブラジルの人々にとって最良の選択です。
Agile Toolkitには、ORM / ActiveRecordおよび動的SQLの独自の実装があります。
はじめに:http : //agiletoolkit.org/intro/1
構文(アクティブレコード):
$emp=$this->add('Model_Employee');
$emp['name']='John';
$emp['salary']=500;
$emp->save();
構文(動的SQL):
$result = $emp->count()->where('salary','>',400)->getOne();
動的SQLとActive Record / ORMは直接使用できますが、Agile ToolkitはさらにそれらをユーザーインターフェイスおよびjQuery UIと統合します。これはJSFに似ていますが、純粋なPHPで書かれています。
$this->add('CRUD')->setModel('Employee');
これにより、従業員モデル用のAJAX化CRUDが表示されます。
include "NotORM.php";
$pdo = new PDO("mysql:dbname=software");
$db = new NotORM($pdo);
$applications = $db->application()
->select("id, title")
->where("web LIKE ?", "http://%")
->order("title")
->limit(10)
;
foreach ($applications as $id => $application) {
echo "$application[title]\n";
}
PDO拡張機能のPHP ORM Faces。PHP Faces Frameworkを参照してください。
$urun = new Product();
$urun->name='CPU'
$urun->prince='124';
$urun->save();
見てくださいhttp://code.google.com/p/lworm/。これは本当にシンプルですが、PHP用の強力で軽量なORMシステムです。必要に応じて、簡単に拡張することもできます。
私たちが使用しているもう1つの優れたオープンソースのPHP ORMは、PHPSmartDbです。安定しており、コードをより安全でクリーンにします。その中のデータベース機能は、私がPHP 5.3で使用した最も簡単な方法です。
Doctrineはおそらくあなたの最善の策です。Doctrine以前は、DB_DataObjectは本質的にオープンソースであった唯一の他のユーティリティでした。