【活動記録の意図】
データテーブルまたはビュー内の特定の行をラップし、データベースアクセスをカプセル化し、これらのデータにドメインロジックを追加するオブジェクト。
【アクティビティ記録に適用できるシナリオ】
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">true</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>