ホームページ  >  記事  >  バックエンド開発  >  データ ソース アーキテクチャ パターンのアクティビティ記録_PHP チュートリアル

データ ソース アーキテクチャ パターンのアクティビティ記録_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:42:031027ブラウズ

【活動記録の意図】

データテーブルまたはビュー内の特定の行をラップし、データベースアクセスをカプセル化し、これらのデータにドメインロジックを追加するオブジェクト。

【アクティビティ記録に適用できるシナリオ】

CRUD操作など、それほど複雑ではないドメインロジックに適しています。

【活動記録の運用仕組み】

オブジェクトにはデータと動作の両方があります。これは、データ アクセス ロジックをドメイン オブジェクトに配置するという最も直接的な方法を使用します。

アクティブレコードの本質はドメインモデルです。このドメインモデルのクラスは、ベースデータベースのレコード構造と完全に一致する必要があります。

一般に、活動記録には次の方法が含まれます。

1. データ行からアクティブなレコードインスタンスを構築します。

2. 今後テーブルに挿入するために新しいインスタンスを構築します。

3. 静的検索メソッドを使用して、一般的に使用される SQL クエリをラップし、アクティビティ レコードを返します。

4. データベースを更新し、アクティビティ記録のデータをデータベースに挿入します。

5. ドメインを取得または設定します。

6. ビジネスロジックを実装します。

【アクティビティ記録のメリットとデメリット】

利点:

1. シンプルで作りやすく、わかりやすい。

2. トランザクションスクリプト使用時のコードの重複を削減します。

3. ドメインロジックを変更せずにデータベース構造を変更できます。

4. 単一の活動記録に基づく導出とテスト検証は非常に効果的です。

短所:

1. 隠れたリレーショナルデータベースはありません。

2. 活動記録は、活動記録オブジェクトがデータベース内のテーブルに直接対応する場合にのみ有効になります。

3. オブジェクトの設計とデータベースの設計は密結合する必要があるため、プロジェクト内でのさらなる再構築が困難になります

【アクティビティ記録とその他のモード】

データソースアーキテクチャモデルの行データ入力: アクティビティレコードは行データ入力と非常に似ています。 2 つの主な違いは、行データ エントリにはデータベース アクセスのみがあるのに対し、アクティビティ レコードにはデータ ソース ロジックとドメイン ロジックの両方があることです。

【PHP活動記録例】

<ol class="dp-c">
<li class="alt"><span><span><?php </span></span></li><li><span> </span></li><li class="alt"><span class="comment">/**</span> </li><li><span><span class="comment"> * エンタープライズ アプリケーション アーキテクチャ データ ソース アーキテクチャ パターン活動記録 2010-10-17 sz </span> </span></li><li class="alt"><span><span class="comment"> * @author phppan.p#gmail.com http://www.phppan.com </span> </span></li> <li> <span><span class="comment"> * Brother Brother Society (http://www.blog-brother.com/) のメンバー </span> </span></li><li class="alt"><span><span class="comment"> * @package Architecture </span> </span></li><li><span><span class="comment">*/</span><span> </span></span></li><li class="alt"><span> </span></li><li><span class="comment"> /**</span></li><li class="alt"><span><span class="comment"> * 注文タイプ</span></span></li><li><span><span class="comment">*/</span><span> </span></span></li> <li class="alt"><span class="keyword">クラス</span><span> 注文 { </span></li><li><span> </span></li><li class="alt"><span> </span><span class="comment">/**</span> </li><li><span><span class="comment"> * 注文ID </span> </span></li><li class="alt"><span><span class="comment">*/</span></span> </li><li><span><span class="comment"></span> <span></span>プライベート</span></li> <li class="alt"><span>$_order_id</span><span class="keyword">;  </span><span></span><span class="vars"> </span><span></span></li> <li><span>/**</span> </li><li class="alt"><span></span> * 顧客 ID <span class="comment"> </span></li><li><span><span class="comment"> * @var <type> </span></span></li>
<li class="alt">
<span><span class="comment">*/</span></span> </li>
<li><span><span class="comment"></span> <span></span>private</span></li> <li class="alt">
<span>$_customer_id </span><span class="keyword">;  </span><span></span><span class="vars"> </span><span></span>
</li> <li>
<span>/**</span> </li>
<li class="alt">
<span></span> * 注文金額 <span class="comment"> </span>
</li>
<li><span><span class="comment"> * @var <type> </span> </span></li>
<li class="alt">
<span><span class="comment">*/</span></span> </li>
<li><span><span class="comment"></span> <span></span>プライベート</span></li> <li class="alt">
<span>$_amount</span> <span class="keyword">;  </span><span></span><span class="vars"> </span><span></span>
</li> <li><span>public</span></li> <li class="alt">
<span>function</span><span class="keyword"> __construct(</span><span>$order_id</span><span class="keyword">, </span><span>$customer_id</span> <span class="vars">, </span><span>$金額</span><span class="vars">) { </span><span></span><span class="vars"> </span><span>$this </span>
</li>->_order_id = <li>
<span>$order_id</span><span class="vars">;  </span><span></span><span class="vars"> </span><span>$this</span>
</li>->_customer_id = <li class="alt">
<span>$customer_id</span><span class="vars">;  </span><span></span><span class="vars"> </span><span>$this</span>
</li>->_amount = <li>
<span>$amount</span><span class="vars">;  </span><span></span><span class="vars"> } </span>
</li>
<li><span> </span></li>
<li class="alt">
<span> </span><span class="comment">/**</span> </li>
<li><span><span class="comment"> * インスタンス削除操作 </span> </span></li>
<li class="alt"><span><span class="comment">*/</span><span> </span></span></li>
<li>
<span> </span><span class="keyword">public</span><span> </span><span class="keyword">関数</span><span> </span><span class="func">削除</span><span>() { </span>
</li>
<li class="alt">
<span> </span><span class="vars">$ sql</span><span> = </span><span class="string">「注文セットWHERE order_id = から注文から削除します。」</span><span> . </span><span class="vars">$this</span><span>->_order_id 。 </span><span class="string">" AND customer_id = "</span><span> 。 </span><span class="vars">$this</span><span>->_customer_id;  </span>
</li>
<li>
<span> </span><span class="keyword">return</span><span> DB::query(</span><span class="vars">$sql</span><span>);  </span>
</li>
<li class="alt"><span> } </span></li>
<li><span> </span></li>
<li class="alt">
<span> </span><span class="comment">/**</span> </li>
<li><span><span class="comment"> * インスタンス更新操作 </span> </span></li>
<li class="alt"><span><span class="comment">*/</span><span> </span></span></li>
<li>
<span> </span><span class="keyword">public </span><span> </span><span class="keyword">関数</span><span> update() { </span>
</li>
<li class="alt">
<span> } </span> </li>
<li><span> </span></li>
<li class="alt">
<span> </span><span class="comment">/**</span>
</li>
<li><span><span class="comment"> * 挿入操作 </span></span></li>
<li class="alt"><span><span class="comment">*/</span><span> </span></span></li>
<li>
<span> </span><span class="keyword">公開</span><span> </span><span class="keywo						</p>
<p align=" left><div style="display:none;">
<span id="url" itemprop="url">http://www.bkjia.com/PHPjc/486087.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">tru​​e</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/486087.html</span><span id="genre" itemprop="genre">技術記事</span><span id="description" itemprop="description"> 【アクティブな承認の概念図】 あるオブジェクトは、データ テーブルまたはビデオの特定の行をパッケージ化し、データ アクセスをカプセル化し、これらのデータにドメイン アクセスを追加します。
</span>
</div></span>
</li>
</ol>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。