MVC: ते काय आहे आणि त्याचा वापरकर्ता इंटरफेसशी काय संबंध आहे. MVC आर्किटेक्चरल नमुना

विंडोजसाठी 04.08.2019
चेरचर

जरी "साइट आर्किटेक्चर" या वाक्यांशाचा अर्थ आपल्यासाठी अंतर्ज्ञानी असू शकतो, परंतु अधिकृत स्त्रोतांकडून अनेक व्याख्यांचा अभ्यास करण्याचा प्रयत्न करूया.

आर्किटेक्चर ही प्रणालीची मूलभूत संस्था आहे, तिचे घटक, त्यांचे एकमेकांशी आणि त्यांच्या वातावरणाशी असलेले संबंध आणि सिस्टमच्या डिझाइन आणि विकासास मार्गदर्शन करणारी तत्त्वे.

प्रोग्राम किंवा संगणक प्रणालीचे आर्किटेक्चर म्हणजे सिस्टमची रचना किंवा संरचना ज्यामध्ये प्रोग्रामचे घटक, या घटकांचे बाह्य दृश्यमान गुणधर्म आणि त्यांच्यातील संबंध समाविष्ट असतात [Bass].

आर्किटेक्चर म्हणजे एखाद्या संस्थेची रचना आणि सिस्टमशी संबंधित वर्तन. इंटरफेसद्वारे परस्परसंवाद करणारे भाग, भाग जोडणारे कनेक्शन आणि भाग एकत्र करण्याच्या अटींमध्ये आर्किटेक्चरचे पुनरावृत्तीने विघटन केले जाऊ शकते. इंटरफेसद्वारे संवाद साधणारे भाग वर्ग, घटक आणि उपप्रणाली समाविष्ट करतात.

सिस्टम किंवा सिस्टमच्या संचाच्या सॉफ्टवेअर आर्किटेक्चरमध्ये प्रोग्राम स्ट्रक्चर्स आणि सिस्टम बनवणाऱ्या संरचनांमधील परस्परसंवादांबद्दलचे सर्व महत्त्वाचे डिझाइन निर्णय असतात. डिझाइन निर्णय इच्छित गुणधर्मांचा एक संच प्रदान करतात ज्याला यशस्वी होण्यासाठी सिस्टमला समर्थन देणे आवश्यक आहे. डिझाइन सोल्यूशन्स सिस्टम विकास, समर्थन आणि देखभाल यासाठी संकल्पनात्मक आधार प्रदान करतात.

तर प्रोग्राम आर्किटेक्चर म्हणजे काय?

मागील भागात दिलेल्या व्याख्या अप्रस्तुत वाचकाला कळू न शकणाऱ्या आहेत. आम्ही सार शक्य तितक्या सोप्या पद्धतीने स्पष्ट करण्याचा प्रयत्न करू.

जेव्हा एखादा प्रोग्राम पुरेसा मोठा होतो, तेव्हा प्रोग्रामर त्याला अनेक फाईल्समध्ये विभाजित करतो. जर तुम्ही समान फंक्शन्सचे गट ओळखण्याचा आणि त्यांना वेगळ्या मॉड्यूल्समध्ये ठेवण्याचा विचार केला नाही तर, अशा विभाजनाचा फारसा उपयोग होणार नाही. कोड पुन्हा वापरता येणार नाही आणि नेव्हिगेट करणे कठीण होईल. कार्यक्रमाचा विस्तार आणि बदल करणे कठीण होईल.

अशा प्रकारे, पहिला प्रश्न उद्भवतो: प्रोग्रामला फायलींमध्ये कसे विभाजित करावे. प्रोग्रामची फाइल आर्किटेक्चर त्याच्या संरचनेचा एक पैलू आहे.

सिस्टम मॉड्यूल्स ओळखताना, ते एकमेकांशी असलेले नाते समजून घेणे आवश्यक आहे. उदाहरणार्थ, डेटाबेस ऍक्सेस आणि ग्राफिक्स प्रोसेसिंग मॉड्यूल्सना एकमेकांच्या अस्तित्वाबद्दल काहीही माहिती असण्याची शक्यता नाही. पण UI मॉड्युलला त्या दोघांबद्दल माहिती असेल (आणि त्यांना त्याबद्दल माहिती नसेल).

सिस्टम घटकांमधील संबंध देखील त्याच्या आर्किटेक्चरद्वारे निर्धारित केले जातात.

सर्वसाधारणपणे, कार्यक्रम आयोजित करण्याच्या उद्देशाने घेतलेले सर्व महत्त्वपूर्ण निर्णय, आणि त्याच्या मदतीने सोडवलेल्या समस्यांचे श्रेय आर्किटेक्चरला दिले जाऊ शकते.

अमूर्ततेचे स्तर

मॉड्यूल्सची रचना करताना (कार्यपद्धतीचे गट निवडणे आणि त्यांना फायलींमध्ये वितरित करणे प्रक्रियात्मक दृष्टिकोनाच्या बाबतीत), अमूर्तता हायलाइट करणे आणि त्यांना अनेक स्तरांमध्ये विघटित करण्याचा प्रयत्न करणे महत्वाचे आहे.

निम्न-स्तरीय मॉड्यूल शक्य तितके स्वायत्त आहेत; ते प्रोग्रामच्या इतर भागांवर अवलंबून नाहीत. चांगल्या प्रकारे डिझाइन केलेले मॉड्यूल "बाहेरील जग" त्यांना नियुक्त केलेल्या समस्येचे निराकरण करण्याच्या गुंतागुंतीपासून वेगळे करतात. कॉलिंग पार्टीला फक्त मॉड्यूल इंटरफेस (बाह्य फंक्शन्स) माहित आहे, अंतर्गत भाग त्याच्यासाठी बंद आहे.

उदाहरण म्हणून फोटो गॅलरी घेऊ. प्रतिमा आणि वापरकर्त्यांबद्दल माहिती डेटाबेसमध्ये संग्रहित केली जाते, वापरकर्ता इंटरफेस क्लायंट भाग आणि प्रशासक पॅनेलमध्ये विभागलेला असतो.

प्रोग्रामची रचना खालील आकृतीप्रमाणे असू शकते:


या उदाहरणात अमूर्ततेचे तीन स्तर आहेत.

मानवी वापरासाठी असलेल्या कोणत्याही प्रोग्राममध्ये, किमान दोन स्तर असतात: वापरकर्ता इंटरफेस आणि मॉडेल. वापरकर्ता इंटरफेस मॉड्यूल डेटा सादर करण्यासाठी आणि दृश्यमान करण्यासाठी आणि वापरकर्त्याच्या प्रतिक्रियांवर प्रक्रिया करण्यासाठी डिझाइन केले आहे. मॉडेलमध्ये समस्येचे निराकरण करण्याचे तर्क आहे आणि ते कोणत्याही प्रकारे डेटा प्रदर्शित करण्याच्या मार्गावर अवलंबून नसावे. मॉडेल विविध प्रकारच्या वापरकर्ता इंटरफेसमध्ये सहजपणे पोर्टेबल असावे.

MVC आर्किटेक्चर

MVC डिझाइन पॅटर्न आता लोकप्रिय आहे. हे वापरकर्ता इंटरफेस पासून ऍप्लिकेशन लॉजिक वेगळे करण्यासाठी कार्य करते. परंतु प्रथम, डिझाइन पॅटर्न म्हणजे काय हे स्पष्ट करूया.

हा मानक डिझाइन सोल्यूशन्सचा एक संच आहे, आर्किटेक्चरचा एक फ्रेमवर्क किंवा त्याचा तुकडा. जर लायब्ररी हे पुन्हा वापरता येण्याजोग्या कोडचे पॅकेज असेल, तर डिझाईन पॅटर्न म्हणजे पुन्हा वापरता येण्याजोग्या सोल्यूशन्सचे पॅकेज.

वापरकर्ता इंटरफेसपासून ऍप्लिकेशन लॉजिक वेगळे करण्यासाठी MVC आम्हाला काय ऑफर करते?

MVC पॅटर्न तुम्हाला डेटा, प्रेझेंटेशन आणि वापरकर्ता परस्परसंवाद प्रक्रिया तीन स्वतंत्र घटकांमध्ये विभक्त करण्याची परवानगी देतो:

  • मॉडेल. मॉडेल डेटा (सामान्यतः दृश्यासाठी) प्रदान करते आणि त्याची स्थिती बदलून (सामान्यतः कंट्रोलरकडून) विनंत्यांना प्रतिसाद देते;
  • पहा. माहिती प्रदर्शित करण्यासाठी जबाबदार (वापरकर्ता इंटरफेस);
  • नियंत्रक. वापरकर्ता इनपुटचा अर्थ लावतो आणि योग्य प्रतिसाद देण्यासाठी मॉडेल आणि दृश्याची माहिती देतो.
  • खालील आकृती फ्रेमवर्कच्या घटकांमधील संबंध दर्शवते. एका छोट्या उदाहरणाने आकृती स्पष्ट करू.


    एका फॉर्मची कल्पना करा जिथे तुम्ही मजकूर प्रविष्ट करू शकता, संपादन बटणावर क्लिक करा आणि त्याचे लिप्यंतरण मिळवा:


    आकृतीमध्ये दर्शविलेल्या चरणांची पुनरावृत्ती करूया:

  • वापरकर्ता संपादन बटण दाबतो आणि व्ह्यू कंट्रोलरला संदेश पाठवतो: "कमांड: संपादित करा"
  • कंट्रोलर संदेश प्राप्त करतो आणि संपादन() पद्धतीवर कॉल करून मॉडेलमध्ये प्रवेश करतो.
  • परिणामी, मॉडेल त्याची स्थिती बदलते (त्यामध्ये संग्रहित लिप्यंतरित मजकूर) आणि याविषयी दृश्य सूचित करते: “इव्हेंट: बदलला”.
  • दृश्य सिग्नल प्राप्त करतो आणि मॉडेलला त्याच्या Get() पद्धतीवर कॉल करून नवीन परिणाम मूल्यासाठी विचारतो.
  • MVC अंमलबजावणी

    MVC ची अंमलबजावणी एक ऑब्जेक्ट ओरिएंटेड दृष्टीकोन (OOP) गृहीत धरते. तथापि, डिझाइन पॅटर्न हा फक्त उपायांचा एक संच आहे. OOP न वापरता ते PHP साठी जुळवून घेऊ. तर्कशास्त्राच्या पृथक्करणाच्या सारावर लक्ष केंद्रित करण्यासाठी आणि ओओपीशी परिचित नसलेल्या वाचकाद्वारे सामग्री लागू करता यावी म्हणून सरलीकरण केले जाते.

    फोटो गॅलरीचे उदाहरण पुन्हा पाहू.
    यात दोन पाहण्याचे मोड आहेत:

  • लघुप्रतिमा प्रतिमा पाहण्यासाठी मोड (सर्व एकाच वेळी);
  • पूर्ण आकाराचा फोटो पाहण्यासाठी मोड (एक).
  • सर्व्हरवर फोटो अपलोड करणे देखील शक्य आहे. याव्यतिरिक्त, फ्रेमवर्कच्या लवचिकतेचे मूल्यांकन करण्यासाठी आम्ही व्हिज्युअलायझेशन प्रकारांसाठी समर्थन लागू करू.

    साइटवर दोन प्रवेश बिंदू असतील:

  • index.php(गॅलरी दृश्य);
  • photo.php (पूर्ण आकाराचा फोटो पहा).
  • आम्ही या दोन फाइल्सचा नियंत्रक म्हणून विचार करू.

    मॉडेल हे एक मॉड्यूल असेल जे इमेज स्टोरेजसह कार्य प्रदान करते. चला त्याला gallery.php म्हणू आणि मॉडेल फोल्डरमध्ये ठेवू.

    HTML टेम्प्लेट दृश्ये म्हणून कार्य करतील; ते टेम्पलेट फोल्डरमध्ये असतील. टेम्पलेट्स काय आहेत आणि ते कशासाठी आवश्यक आहेत ते नंतर पाहिले जाईल.

    गॅलरी दृश्य आणि फोटो दृश्य पृष्ठांमध्ये एक सामान्य शीर्षलेख आणि तळटीप असेल, फक्त मध्यवर्ती भाग भिन्न असेल.

    गॅलरी दृश्यात दोन प्रकारचे व्हिज्युअलायझेशन असेल:

  • टेबल म्हणून (डिफॉल्ट);
  • यादीच्या स्वरूपात.
  • आम्हाला चार टेम्पलेट्सची आवश्यकता असेल:
  • main.php(पृष्ठ फ्रेमवर्क);
  • content_index_table.php (गॅलरी सामग्रीचे सारणी दृश्य);
  • content_index_list.php (गॅलरी सामग्रीचे सूची दृश्य);
  • content_photo.php (फोटो दृश्य पृष्ठाची सामग्री).
  • याचा परिणाम खालील साइटच्या संरचनेत होतो:


    फाइलची रचना दोन आडव्या पट्ट्यांनी विभागली आहे, तीन विभाग तयार करतात. वरच्या विभागातील फाइल्स मॉडेलच्या, मधल्या विभागातील फाइल्स व्ह्यूच्या आणि खालच्या विभागातील फाइल्स कंट्रोलरच्या आहेत.

    मॉडेल

    चला मॉडेलच्या अंमलबजावणीसह प्रारंभ करूया. कमीत कमी आणि उदाहरणाच्या चांगल्या स्पष्टतेसाठी खाली दिलेला कोड पूर्ण दर्शविलेला नाही.

    आम्ही फक्त मॉडेलचा इंटरफेस परिभाषित केला आहे, अंमलबजावणी गहाळ आहे. तथापि, MVC फ्रेमवर्कच्या उदाहरणाच्या अंमलबजावणीसाठी याची अजिबात गरज नाही.

    कामगिरी

    आता टेम्पलेट्स पाहू. चला सामान्य पृष्ठाच्या सांगाड्यापासून सुरुवात करूया:

    टेम्प्लेट $title आणि $content ही व्हेरिएबल्स वापरते या वस्तुस्थितीमुळे तुम्ही गोंधळून जाऊ नये. नियंत्रक त्यांना सेट करेल. पण त्याबद्दल नंतर अधिक.

    नोटेशनची एक लहान आवृत्ती आहे.

    टेम्प्लेटमध्ये वापरणे सोयीचे आहे. साच्यांमध्ये if-else, foreach, for, आणि कंस्ट्रक्ट करताना लिहिण्यासाठी पर्यायी पर्याय वापरणे देखील अधिक सोयीचे आहे. ते यासारखे दिसतात:

    If():endif; foreach(): endforeach;

    बाकीचे टेम्प्लेट्स main.php मध्ये याप्रमाणे टाकले जातील:

    खालील उदाहरणे त्यांचा कोड दर्शवतात:

    कोड टेम्पलेट्स/content_index_table.php

    तक्ता | यादी

    ">

    आम्ही वाचण्याची शिफारस करतो

    वर