ホームページ  >  記事  >  バックエンド開発  >  PHP ORM フレームワークとシンプルなコードの実装_PHP チュートリアル

PHP ORM フレームワークとシンプルなコードの実装_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:34:041042ブラウズ

オブジェクト リレーショナル マッピング (ORM) は、オブジェクト指向データベースとリレーショナル データベース間の不一致を解決するために設計されたテクノロジーです。 簡単に言うと、ORM は、オブジェクトとデータベース間のマッピングを記述するメタデータを使用して、プログラム内のオブジェクトをリレーショナル データベースに自動的に保存します。基本的に、データをある形式から別の形式に変換します。

ORM はすべての SQL ステートメントの生成を提供し、プログラマーはデータベースの概念から離れます。概念的要件 (HQL など) から SQL ステートメントへのマッピングにはコストはかからず、1% のパフォーマンスの低下もありません。実際のパフォーマンスへの影響はマッピング プロセス中、より具体的にはオブジェクトのインスタンス化中に発生します。

現在、PHP オープンソース用のより有名な ORM には次のものがあります:

1.推進

Propel は、PHP5 に適した ORM マッピング (オブジェクト リレーショナル マッピング) フレームワークであり、Apache Torque に基づいたオブジェクト永続層のサポートを提供します。 XML 形式のスキーマ定義ファイルと対応する構成ファイルを通じて SQL とクラスを生成し、SQL の代わりにオブジェクトを使用してデータベース テーブルのレコードを読み書きできるようにします。 Propel は、データ モデルの SQL 定義ファイルと PHP クラスを作成するジェネレーターを提供します。開発者は、生成されたクラスを簡単にカスタマイズすることもできます。たとえば、PHP フレームワーク symfony の 1.2 より前のバージョンは、デフォルトで使用されます。デフォルトの ORM フレームワークとして機能します。

公式ウェブサイト:http://www.propelorm.org/

2. 教義

Doctrine は PHP ORM フレームワークであり、バージョン >=php5.2.3 で実行する必要があります。これは強力なデータ抽象化レイヤーです。

その主な特徴の 1 つは、オブジェクト指向のアプローチを使用してデータベース クエリ クロージャを実装することです。その最下層は、Hibernate HQL と同様の DQL クエリ ステートメントを使用してデータベース クエリを実行するため、開発がより柔軟になり、重複コードが大幅に削減されます。 Propel と比較した場合、Doctrine の利点は、全文検索をサポートしていること、Doctrine のドキュメントが常に Propel よりも包括的で豊富であること、コミュニティがより活発で、より自然で読みやすく、ネイティブ SQL に近いことです。 。性能もPropelより若干優れています。同様に、Doctrine を既存のアプリケーション フレームワークに簡単に統合できます。たとえば、PHP フレームワーク symfony 以降のバージョンでは、デフォルトの ORM フレームワークとして Doctrine が使用されており、Doctrine を Codeigniter と統合することもできます。

公式ウェブサイト: http://www.doctrine-project.org/

3.EZPDO

EZPDO は非常に軽量な PHP ORM フレームワークです。 EZPDO の作成者の本来の目的は、複雑な ORM の学習曲線を軽減し、ORM の操作効率と機能性のバランスを可能な限り取ることです。EZPDO は、私がこれまで使用した中で最も単純な ORM フレームワークであり、今後も統合したいと考えています。 CoolPHP SDK を使用すると、実行効率が非常に良く、機能も基本的にニーズを満たすことができますが、ESPDO の更新は比較的遅いです。

公式サイト:http://www.ezpdo.net/blog/?p=2

4、小豆

RedBean は、MySQL、SQLite、PostgreSQL のサポートを提供する、使いやすい軽量の PHP ORM フレームワークです。 RedBean のアーキテクチャは非常に柔軟で、開発者はプラグインを通じて機能を簡単に拡張できます。

公式サイト:http://www.redbeanphp.com/

5. その他

国内のFleephp開発フレームワークは、TableDataGatewayに基づいたORM実装を実装しています。SQLステートメントのカプセル化を提供することに加えて、Zend FrameworkもTableGateway、TableRowSet、およびTableRowを実装しています。RailsのActiveRecord実装に似たソリューションもいくつかあります。

一般に、一般的な ORM フレームワークは、単純なアプリケーション システムの基本的なニーズを満たすことができ、開発の難易度を大幅に軽減し、開発効率を向上させることができますが、SQL の最適化という点では、純粋な SQL 言語よりも明らかに劣ります。複雑な関係や SQL 埋め込み式は理想的ではない可能性があります。おそらくこれは、PHP 自体のオブジェクトの永続性の問題が主な原因であり、その結果、ORM が非効率になり、一般に純粋な SQL よりも遅くなります。しかし、これらを解決する方法はあります。パフォーマンスを解決する最も基本的な解決策は、Hibernate の構成は複雑ですが、2 次キャッシュとクエリ キャッシュを柔軟に使用することで問題を大幅に軽減することです。データベースのクエリ負荷により、システムのパフォーマンスが大幅に向上します。

PHP ORM を自分で実装したい場合は、以下を参照してください:

れーれー

http://www.bkjia.com/PHPjc/752351.html

tru​​ehttp://www.bkjia.com/PHPjc/752351.html技術記事オブジェクト リレーショナル マッピング (ORM) は、オブジェクト指向データベースとリレーショナル データベース間の不一致を解決するために設計されたテクノロジです。 簡単に言えば、ORM は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。