में एक नियंत्रक में मॉडल को लोड करने के लिए कैसे मैं मुख्य रूप से सीखने की प्रक्रिया के लिए हल्के एमवीसी बनाने पर काम कर रहा हूं, लेकिन मैं इसे अंततः उपयोग करने के लिए पर्याप्त होना चाहता हूं।एमवीसी
नीचे एक बुनियादी उदाहरण/डेमो है कि मूल नियंत्रक कैसे दिख सकता है, मान लीजिए कि यूआरआई संसाधित हो गया है और इस नियंत्रक और इन 2 विधियों को रूट किया गया है।
1) मुझे अपने मॉडल कक्षाओं के अंदर डेटाबेस/कैश/आदि से डेटा प्राप्त करने की आवश्यकता है, मुझे बस अपने मॉडल को मेरे उदाहरण नियंत्रक में लोड करने के तरीके की सहायता चाहिए, आप देख सकते हैं कि मैंने इसे जोड़ा है $profileData = $this->model->getProfile($userId)
से नीचे जो अभी बनाया गया है और अस्तित्व में नहीं है, मैं काम करने के लिए ऐसा कुछ कैसे प्राप्त कर सकता हूं? या क्या मुझे कक्षा में मॉडल को अलग तरीके से लोड करना चाहिए?
2) बहुत से पृष्ठों को उपयोगकर्ता को साइट पर लॉग इन करने की आवश्यकता होगी। क्या मैं नियंत्रक में नीचे उस भाग को संसाधित कर सकता हूं यह जांचने के लिए कि कोई उपयोगकर्ता लॉग इन है या नहीं, उदाहरण के लिए, प्रोफाइल पेज बनाने से पहले, जांचें कि उपयोगकर्ता लॉग इन है या नहीं, तो इसके बजाय लॉगिन पेज बनाएं और प्रत्येक नियंत्रक विधि के अंदर इन चेक को जोड़ें /पृष्ठ?
/**
* Example Controller
*/
class User_Controller extends Core_Controller {
// domain.com/user/id-53463463
function profile($userId)
{
//GET data from a Model
$profileData = $this->model->getProfile($userId);
$this->view->load('userProfile', $profileData);
}
// domain.com/user/friends/
function friends()
{
//GET data from a Model
$friendsData = $this->model->getFriendlist();
$this->view->load('userFriends', $friendsData);
}
}
कोर
abstract class Core_Controller {
protected $view;
protected $model;
function __construct(DependencyContainer $dependencyContainer){
$this->view = new Core_View();
//$this->view = $dependencyContainer->get(view);
}
}
विचारों के लिए धन्यवाद, और आप सही हैं कुछ नियंत्रक की इच्छा अधिकतर 1 मॉडल की आवश्यकता है, खासकर जब एक सोशल नेटवर्क प्रकार साइट बनाते हैं। – JasonDavis
हाँ, ऊपर दिए गए उदाहरण के साथ एक और नुकसान यह है कि जब भी आपको इसकी आवश्यकता न हो, तब भी आप मॉडल को तुरंत चालू करें। यह शायद एक बड़ा सौदा नहीं है, लेकिन यह ध्यान देने योग्य है कि आप कुछ अनुरोधों पर अतिरिक्त काम कर रहे हैं। – gregghz