कैसे मैं अपने वर्गों सेट करना चाहिए?

वोट
0

मैं OOP के साथ काम करने उपयोगकर्ता उत्पन्न डेटा की एक साइट का निर्माण शुरू कर रहा हूँ।

मेरे वर्गों से आने वाले डेटा के विभिन्न प्रकार हैं। मैं तो बस उन सूचियों से एक आइटम का चयन करने के लिए कार्य करता है कि डेटाबेस से डेटा की एक सूची प्राप्त है, और कार्य हैं। उदाहरण के लिए

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 के विषय पर, मैं एक उपयोगकर्ता वर्ग की तरह दिखता है ... निजी $ उपयोगकर्ता = सरणी () है,

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 IGNORE  data from $this->user into the database 
}

अब किसी को भी कुछ भी तरह से इस लग रहा है, गलत दिखाई देता है ज्यादातर, मैं add_user समारोह के लिए एक पैरामीटर के रूप user_data स्थापित करना चाहिए सदस्य चर डालने के बजाय,?

27/08/2009 को 03:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
6

आप सभी को समझने के लिए अपने पुराने प्रक्रियात्मक शैली कार्यों लेने और उन्हें वस्तुओं के अंदर लपेटकर अपने कोड वस्तु उन्मुख नहीं है कि जरूरत से पहले, यह सिर्फ मतलब है कि आप और अधिक जटिल और बुरी तरह बदसूरत प्रक्रियात्मक कोड लिख रहे हैं।

दूसरी बात मैं दृढ़ता से सिफारिश करेंगे, वास्तव में मैं अपने सिफारिशों है कि आप कम से कम विभिन्न पीएचपी फ़्रेमवर्क है कि वहाँ बाहर हैं अध्ययन करने के लिए कुछ समय लगेगा में भी ज़ोरदार नहीं हो सकता। आप उनमें से किसी का उपयोग कभी नहीं हो सकता है, मैं गारंटी है कि उनमें से किसी का अध्ययन आप वस्तु उन्मुख सिद्धांतों और सामान्य रूप में अच्छा आवेदन डिजाइन पर एक बेहतर समझ दे देंगे में बहुत सुरक्षित महसूस करते हैं। मामले में आप कभी नहीं देखा है किसी भी पहले, निम्नलिखित एक जगह शुरू करने के लिए देना चाहिए:

  • Zend फ्रेमवर्क
  • Symfony
  • CakePHP
  • सौर फ्रेमवर्क

साथ ही, यदि आप मार्टिन Fowler या उद्यम अनुप्रयोग वास्तुकला के पैटर्न की कभी नहीं सुना है, मैं दृढ़ता से सुझाव है कि आप कोशिश करते हैं और एक प्रति लेने। वह सचमुच पुस्तक है कि बुनियादी पैटर्न है कि हर लोकप्रिय वेब ढांचे में उपयोग में हैं प्रदान की गई है लिखा था।

मेरे लिए बहुत बहुत 'मैनुअल प्रतिक्रिया पढ़ने' :-P

अपने विशेष मामले में मैं एक बुनियादी सक्रिय रिकॉर्ड पैटर्न के साथ शुरू अपने डेटाबेस का उपयोग तर्क और अपने डोमेन तर्क शामिल करने के लिए होगा। पैटर्न के इस प्रकार में, प्रत्येक डेटाबेस तालिका (उपयोगकर्ताओं, लेख, टिप्पणियां) एक असतत वस्तु का प्रतिनिधित्व करती है। उपयोगकर्ताओं के लिए बुनियादी सक्रिय रिकॉर्ड वर्ग कार्यों के सभी शामिल एक विशिष्ट उपयोगकर्ता या उपयोगकर्ताओं की सूची के साथ ही काम करता है, सम्मिलित अद्यतन, या एक उपयोगकर्ता को हटाने में प्राप्त करने के लिए होगा। इसके अलावा, एक उपयोगकर्ता सक्रिय रिकॉर्ड वर्ग एक उपयोगकर्ता के लेख और टिप्पणियां लोड करने के तरीकों को शामिल करेंगे।

एक खोल उपयोगकर्ता वर्ग कुछ इस तरह दिख सकता है:

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() {}
}
27/08/2009 को 04:26
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more