2009-08-27 17 views
0

私はoopでユーザー生成データのサイトを構築する作業を開始しています。クラスはどのようにセットアップすればよいですか?

私のクラスからはさまざまなタイプのデータがあります。 私は、データベースからデータのリストを取得する関数を持っており、それらのリストから1つの項目だけを選択する機能を持っています。例

function Get_Article($aid); //Gets an article 
function Get_Users_Articles($uid); //Gets a multidemsional array of the users 
            //articles 
function Get_Latest_Articles(); //Self explanatory by now 
function Get_Local_Articles($zip); //Gets articles written by local users 
function Get_Local_Users($zip); //Gets all local users 

function Get_All_Article_Comments($aid); //Gets a multidimensional array of the 
            //comments written for an article 
function Get_Article_Comment($cid); //Gets a single article comment 

については 私は、これらの機能を整理するために私のクラスを設定する必要がありますか今、。 私はそれらをすべて同じクラスに入れるべきですか、記事からのコメントを分離するか、記事/コメントのリストを取得するものから単一の記事/コメントを取得する機能を分離する必要があります。私は後でコメントを許可するサイトにもっと多くのものを追加するかもしれないので、私は他のコメント関数をすべて分けることを考えていました。また、「ローカル」関数はすべて、数学を実行する同じ関数を使用するので、それらを一緒にグループ化するか、あるいは単に継承を使用する必要があります...任意の提案???

oopの主題については、私は次のようなユーザークラスを持っています。 private $ user = array();

public function Get_User_Data($uid){ 
    //get user data from database 
    return $this->user; 
} 

public function Set_User_Data($user_array){ 
    $this->user = $user_array; 
} 

public function Add_User(){ 
    //INSERT data from $this->user into the database 
} 

は今、誰もが、ほとんど、私はメンバ変数を挿入するのではなく、ADD_USER関数のパラメータとしてのuser_dataを設定する必要があり、これは、見え方に何かを見ていますか?

答えて

6

まず最初に、あなたの古い手続きスタイルの関数をオブジェクトの中に入れてコードをオブジェクト指向にするのではなく、もっと複雑でひどく醜い手続きコードを書いていることを理解する必要があります。

は、第二に、私は強く、実際に私はあなたが、少なくともそこにある様々なPHPのフレームワークを研究するために、いくつかの時間がかかる私の勧告では、あまりにも激しいことができない、お勧めします。あなたはそれらのどれも使用することはできませんが、私はそれらのいずれかを勉強することで、オブジェクト指向の原則と優れたアプリケーション設計を一般的に把握できることを保証するのにかなり安心しています。場合にはあなたがどんな前に見たことがない、次のように開始する場所を与える必要があります。

  • Zend Frameworkの
  • symfonyの
  • CakePHPの
  • 太陽枠組み
  • さらに

、あなたの場合Martin Fowlerやエンタープライズアプリケーションアーキテクチャーのパターンについて聞いたことがないので、コピーを取ってみることを強くお勧めします。彼は文字通り、あらゆる普及したWebフレームワークで使用されている基本パターンを提供した本を書いています。私の私は、データベース・アクセス・ロジックとドメイン・ロジックを格納するための基本的なActive Recordのパターンで開始すると、あなたの特定のケースで:-P

「手動応答を読んで」あまりにも多くの

。このタイプのパターンでは、各データベーステーブル(ユーザ、記事、コメント)は個別のオブジェクトで表されます。ユーザーのための基本的なアクティブレコードクラスは、特定のユーザーまたはユーザーのリストと同様に、挿入、更新、またはユーザーを削除する機能を得るために、すべての機能が含まれます。また、ユーザーのActive Recordクラスは、ユーザーの記事やコメントをロードするためのメソッドが含まれます。

class User extends Active_Record { 

public function find() {} 

/** 
    Single function performs inserts and updates for the object 
**/ 
public function save() {} 

public function delete() {} 

public function getArticles() {} 

public function getComments() {} 
} 

シェルUserクラスは次のようになります。

関連する問題