MVC का उपयोग कब करें


11

मैं PHP और एक MySQL बैकएंड के साथ एक साइट बना रहा हूं। लेकिन, मैं वर्तमान में किसी भी प्रकार के ढांचे का उपयोग नहीं कर रहा हूं। क्या मुझे मॉडल व्यू कंट्रोलर का उपयोग करना चाहिए?


3
MVC डिजाइन पैटर्न का उपयोग करने के लिए आपको आवश्यक रूप से एक फ्रेमवर्क का उपयोग करने की आवश्यकता नहीं है। आप MVC का उपयोग करने के लिए अपना स्वयं का कोड संरचना कर सकते हैं।
एमी एन्ज़ुवेस्की

5
क्या आप पूछ रहे हैं कि क्या आपको एक रूपरेखा का उपयोग करना चाहिए या यदि आपको सामान्य रूप से एमवीसी दृष्टिकोण का उपयोग करना चाहिए?
एडम लेअर

जवाबों:


11

अंगूठे का मेरा नियम:

कोई भी पृष्ठ जो किसी डेटाबेस को हिट करता है या किसी भी प्रकार के उपयोगकर्ता इनपुट की आवश्यकता होती है, MVC संरचना के साथ प्रबंधित करना आसान होगा।

जरूरी नहीं कि आपको पूरे ढांचे के साथ जाना पड़े, अगर साइट काफी सरल है, तो आप प्रत्येक पृष्ठ के लिए एक साधारण पेज कंट्रोलर क्लास का उपयोग कर सकते हैं, जिसे इसकी आवश्यकता है ( ऊपर देखें )। यह आपके लिए एक स्केलेबल समाधान नहीं है - इस परियोजना के दीर्घकालिक लक्ष्यों को ध्यान में रखें।

यहाँ (जल्दी से एक साथ हैक किया गया) का एक मोटा स्केच है PageController सेटअप:

index.php
--------------------------------------------------------

include 'Controller.php';
include 'Db.php';//db connection
include 'View.php';
$Controller = new MyController(new Db(), new View());
$Controller->route($_GET);
$Controller->render();


Controller.php
--------------------------------------------------------
class Controller($db){

    /* ensure all collaborators are provided */
    public function __construct(Db $db, View $view){
         $this->db = $db;
         $this->db->connect(array('host','db','user','pass'));
         $this->view = $view;
    }

    /* load the appropriate model data */
    public function route($_GET){
        //load the right model data and template
        switch($_GET){
            case $_GET['articles'] === 'cats':
                $this->vars = $this->db->get('cats');
                $this->template = 'cats.php';
                break;
            case $_GET['articles'] === 'dogs':
                break;
                $this->vars = $this->db->get('dogs');
                $this->template = 'dogs.php';
            default:
             $this->vars = array();
        }

    } 

    /* render an html string */
    public function render(){
        echo $this->view->render($this->template,$this->vars);
    }

}

View.php
------------------------------------------------------------
class View.php
    {
     /* return a string of html */
     public function render($template,$vars){
            // this will work - but you could easily swap out this hack for 
            // a more fully featured View class
            $this->vars = $vars;
            ob_start();
            include $template;
            $html = ob_get_clean();
            return $html;
         }

     }

template cats.php
--------------------------------------------------------
$html = '';
$row_template = '%name%,%breed%,%color%';
foreach($this->vars as $row){
    $html .= str_replace(
        array(%name%,%breed%,%color%),
        array($row['name'],$row['breed'],$row['color']),
        $row_template);
    }
echo $html;

Db.php
---------------------------------------------------------------
I haven't bothered writing a db class... you could just use PDO

3

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

एमवीसी एक ऐसा पैटर्न है जो वेबसाइटों के लिए अच्छी तरह से जाना जाता है और स्वीकार किया जाता है और यदि आप प्रोजेक्ट पर अन्य लोगों को लाते हैं तो यह मदद करेगा। उस अंत तक आप शायद शुरू करने के लिए एक स्थापित रूपरेखा चुनना चाहेंगे।


1

आपने ऐसा कोई विवरण नहीं दिया, जो प्रश्न का उत्तर देने में मदद कर सके, लेकिन ऐसे मामले में मेरी डिफ़ॉल्ट अनुशंसा "हाँ, MVC फ्रेमवर्क का उपयोग करें" है। कस्टम समाधान के साथ तभी जाएं जब आप वास्तव में निश्चित हों कि आपको इसकी आवश्यकता है।


1

आर्किटेक्चर के रूप में, MVC आपके प्रोजेक्ट / वेबपेज को कई भागों में विभाजित करने पर ध्यान केंद्रित करता है। यह आपके जीवन को आसान बना सकता है जब आपको कोड या उपयोगकर्ता इंटरफ़ेस में कुछ बदलना होगा।

अंगूठे का नियम, यदि आप अपने प्रोजेक्ट के बारे में विशिष्टताओं में बदलाव की उम्मीद करते हैं, खासकर जब वे परिवर्तन पूरे कोड को प्रभावित करते हैं, तो उस आर्किटेक्चर के साथ जाएं जो आपको कोड को छोटे लेगो टुकड़ों में तोड़ने के लिए मजबूर करता है।


1

इस बिंदु पर नहीं। तब तक प्रतीक्षा करें जब तक आपकी साइट बड़ी और गड़बड़ न हो जाए। आप अपने आप से पूछेंगे - चीजों को कम गन्दा करने के लिए मैं क्या कर सकता हूँ? आप MVC पर एक लेख पढ़ेंगे और आपको यह पसंद आएगा। आप यह सवाल नहीं करेंगे कि इसका उपयोग करना है या नहीं। तुम जान जाओगे। यही वह क्षण होगा जब इसका उपयोग शुरू किया जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.