2011-02-06 5 views
2

Hey、 私はここで少しアドバイスを探していますが、通常の保存、削除、検索のメソッドを備えたシンプルなモデルがありますが、getAllメソッドも作成したいと思っています。実際のモデルに関連していないとしてモデルに入れて間違っています。どのように私はこれを設計すべきですか?モデル内のgetAll()方法は、実際には標準的な方法である持っコレクション検索メソッドをモデルに追加する

<?php 
class User { 

    $id; 
    $name; 
    $address; 

    public function __construct() { 
     // do some constructor stuff  
    } 

    public function save() { 
     // insert into.... 
    } 

    public function delete() { 
     // delete from user where .... 
    } 

    public function find($id) { 
     // select * from user where ...  
    } 
} 
?> 

すべてのヘルプははるかに高く評価されるだろう、 おかげ

答えて

4

ユーザーの検索、作成、削除の方法があると、心配することはありません。 私の意見では、あなたは、すべてのユーザー(ハックのビット)
2を得るために、特別な方法であなたのfind()方法を使用できる2つのアプローチ

1)がある)あなたは、パブリック静的を作成することができますメソッドgetAll()(私はそれが静的であるべきだと思います。getAll()はUserオブジェクトの1つのインスタンスに関連していないためです)

1

私の現在のモデルは次のようになります。それに本質的に有害なものは何もありません。

例えば、Zend FrameworkではZend_Db_Table_AbstractベースクラスにはfetchAll()メソッドが組み込まれています。 Codeigniterの内部ActiveRecordクラスは、同様に動作するget()を実装しています。等

モデルはCRUDよりも広い概念であり、メソッドの数はデータを処理する限り制限されません。

1

アプリケーションの "モデル"に依存します。
dbテーブルの単なる表現であれば、モデルにfindAll()メソッドまたはgetAll()メソッドを追加できます。
エンティティクラスの場合は、データソースについて知るべきではありません。アプリケーションにservicedata mappersのレイヤーを追加する必要があります。
アプリケーションが非常に小さく、余分なレイヤーがオーバーロードされる場合は、active recordパターンを使用してください。

関連する問題