PHP MVC फ्रेमवर्क ट्यूटोरियल: कोडइग्निटर उदाहरण
PHP MVC फ्रेमवर्क क्या है?
PHP MVC एक एप्लीकेशन डिज़ाइन पैटर्न है जो एप्लीकेशन डेटा और बिजनेस लॉजिक (मॉडल) को प्रेजेंटेशन (व्यू) से अलग करता है। MVC का मतलब है मॉडल, व्यू और कंट्रोलर।
नियंत्रक मॉडल और दृश्यों के बीच मध्यस्थता करता है।
एमवीसी डिज़ाइन पैटर्न को एक कार और ड्राइवर के रूप में सोचें।
कार में विंडस्क्रीन (दृश्य) होती है जिसका उपयोग चालक (नियंत्रक) आगे के यातायात पर नजर रखने के लिए करता है, फिर आगे जो कुछ देखता है उसके आधार पर गति या ब्रेक (मॉडल) लगाता है।
PHP MVC फ्रेमवर्क का उपयोग क्यों करें?
- PHP MVC फ्रेमवर्क जटिल तकनीकों के साथ काम करना सरल बनाता है;
- सभी जटिल कार्यान्वयन विवरण छिपाना
- मानक विधियाँ प्रदान करना जिनका उपयोग हम अपने अनुप्रयोगों के निर्माण के लिए कर सकते हैं।
- डेवलपर उत्पादकता में वृद्धि, ऐसा इसलिए है क्योंकि डेटाबेस से कनेक्ट करना, उपयोगकर्ता इनपुट को साफ करना आदि जैसी गतिविधियों का आधार कार्यान्वयन पहले से ही आंशिक रूप से कार्यान्वित किया गया है।
- व्यावसायिक कोडिंग मानकों का पालन
PHP MVC डिज़ाइन पैटर्न
आइए अब MVC डिज़ाइन पैटर्न के प्रत्येक घटक पर संक्षेप में चर्चा करें।
आदर्श - यह भाग व्यवसाय तर्क और एप्लिकेशन डेटा से संबंधित है। इसका उपयोग डेटा सत्यापन करने, डेटा को संसाधित करने और उसे संग्रहीत करने के लिए किया जा सकता है। डेटा यहाँ से आ सकता है;
- सरल फ़ाइल
- डेटाबेस
- एक्सएमएल दस्तावेज़
- अन्य वैध डेटा स्रोत.
नियंत्रक - यह वह भाग है जो सर्वर से संसाधनों के लिए उपयोगकर्ताओं के अनुरोधों से संबंधित है।
उदाहरण के लिए, जब उपयोगकर्ता URL के लिए अनुरोध करता है …/index.php?products=सूची, नियंत्रक उत्पाद डेटा को पुनः प्राप्त करने के लिए उत्पाद मॉडल को लोड करेगा और फिर परिणामों को सूची दृश्य में आउटपुट करेगा।
संक्षेप में, नियंत्रक अनुरोधित संसाधनों के आधार पर मॉडल और दृश्यों को एक साथ जोड़ता है।
दृश्य - यह भाग उपयोगकर्ता को डेटा प्रस्तुत करने से संबंधित है। यह आमतौर पर HTML पेज के रूप में होता है।
PHP MVC फ्रेमवर्क के प्रकार
सर्वोत्तम PHP फ्रेमवर्क का चयन करना एक चुनौती है।
MVC के लाभों से लाभ उठाने के लिए आपको अपना स्वयं का फ्रेमवर्क लिखने की आवश्यकता नहीं है।
आपको यह समझने के लिए कि MVC फ्रेमवर्क कैसे काम करता है, केवल अपना स्वयं का MVC-संबंधित अनुप्रयोग डिज़ाइन बनाने का प्रयास करना चाहिए।
एक बार जब आप MVC फ्रेमवर्क के काम करने के तरीके से सहज हो जाएं, तो आपको परिपक्व और पहले से परीक्षण किए गए फ्रेमवर्क की ओर बढ़ना चाहिए।
नीचे दी गई तालिका कुछ लोकप्रिय php फ्रेमवर्क और प्रत्येक फ्रेमवर्क द्वारा प्रदान की जाने वाली सुविधाओं का संक्षेप में वर्णन करती है।
ढांचा | विवरण |
---|---|
|
यह सबसे लोकप्रिय PHP MVC फ्रेमवर्क में से एक है। यह हल्का है और इसे सीखने में कम समय लगता है। इसमें लाइब्रेरी का एक समृद्ध सेट है जो वेबसाइट और एप्लिकेशन को तेज़ी से बनाने में मदद करता है। OOP प्रोग्रामिंग के सीमित ज्ञान वाले उपयोगकर्ता भी इसका उपयोग कर सकते हैं। CodeIgniter संचालित अनुप्रयोगों में शामिल हैं; |
|
यह एक हाइरार्किकल मॉडल व्यू कंट्रोलर HMVC सुरक्षित और हल्का फ्रेमवर्क है। इसमें अनुप्रयोगों को तेज़ी से विकसित करने के लिए घटकों का एक समृद्ध सेट है। कोहाना का उपयोग करने वाली कंपनियों में शामिल हैं; |
|
इसे रूबी ऑन रेल्स के आधार पर तैयार किया गया है। यह सॉफ्टवेयर डिजाइन पैटर्न, कंवेंशन ओवर कॉन्फ़िगरेशन, एक्टिवरिकॉर्ड आदि जैसी अवधारणाओं के लिए जाना जाता है। CakePHP संचालित अनुप्रयोगों में शामिल हैं; |
|
यह एक शक्तिशाली ढांचा है;
इसमें निम्नलिखित विक्रेताओं के API शामिल हैं Amazon, गूगल, Flickr, याहू आदि। यह व्यावसायिक अनुप्रयोगों के विकास के लिए आदर्श है। Zend संचालित अनुप्रयोगों में शामिल हैं;
ज़ेंड फ्रेमवर्क का उपयोग करने वाली कंपनियों में शामिल हैं;
|
जनमत सर्वेक्षण एप्लिकेशन को कोडइग्निटर में पोर्ट करना
इस में ट्यूटोरियल, हमने एक PHP पोल एप्लीकेशन बनाया है। यहाँ, हम उस कोड को CodeIgniter में पोर्ट करेंगे
- डाउनलोड CodeIgniter का नवीनतम संस्करण उनके वेबसाइट।
- ज़िप की गई फ़ाइल की सामग्री को अपने वेब सर्वर निर्देशिका में अपनी डेवलपमेंट निर्देशिका में निकालें। हम इस पाठ में फ़ोल्डर नाम के रूप में ciopinionpoll का उपयोग करेंगे।
- URL पर ब्राउज़ करें http://localhost/ciopinionpoll/
अब हम अपने जनमत सर्वेक्षण एप्लिकेशन को CodeIgniter पर पोर्ट करने जा रहे हैं। याद रखें कि हमारा एप्लिकेशन तीन प्रमुख घटकों में विभाजित था;
- फ्रंट कंट्रोलर - यह वह हिस्सा है जो URL अनुरोधों का जवाब देता है और अनुरोधित पृष्ठ लौटाता है। यह कोड कंट्रोलर में जाएगा
- मॉडल - यह वह कोड है जो अनुरोधित डेटा का जवाब देता है और अनुरोधित डेटा लौटाता है। यह कोड मॉडल में जाएगा
-
दृश्य - यह वह कोड है जो डेटा को फ़ॉर्मेट करने और प्रदर्शित करने के लिए ज़िम्मेदार है। यह कोड दृश्य में जाएगा
- ciopinionpoll फ़ोल्डर ब्राउज़ करें
- ओपन डेटाबेस.php फ़ाइल application/config निर्देशिका में स्थित है।
- कोड की निम्नलिखित पंक्तियों का पता लगाएँ
डेटाबेस कॉन्फ़िगरेशन सेटिंग्स
- उपयोगकर्ता नाम को रूट पर सेट करें
- पासवर्ड को अपने लोकलहोस्ट रूट पासवर्ड पर सेट करें
- डेटाबेस का नाम opinion_poll में बदलें। ध्यान दें कि हम पिछले पाठ में बनाए गए डेटाबेस का उपयोग करेंगे।
- परिवर्तन सहेजें और फ़ाइल बंद करें।
अपना मॉडल बनाना
इसके बाद हम अपना मॉडल बनाने जा रहे हैं जो CI_Model को विस्तारित करेगा। CI_Model CodeIgniter लाइब्रेरी का हिस्सा है। मॉडल एप्लीकेशन/मॉडल में स्थित होगा opinion_poll_model.php
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->load->database(); } public function total_votes() { $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries'); return $query->row()->choices_count; } public function get_results() { $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } public function add_vote($choice) { $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); } } ?>
यहाँ,
- “class Opinion_poll_model extends CI_Model…” हमारा मॉडल है जो CI_Model को विस्तारित करता है
- “…parent:: __construct();” CI_Model कन्स्ट्रक्टर को कॉल करता है
- “$this->load->database();” डेटाबेस लाइब्रेरी को लोड करता है ताकि हमारा एप्लिकेशन डेटाबेस के साथ इंटरैक्ट कर सके
- “$this->db->” CodeIgniter का सक्रिय रिकॉर्ड है। इसे जाँचें संपर्क सक्रिय रिकॉर्ड पर अधिक जानकारी के लिए.
हमारा कंट्रोलर बनाना अब हम कंट्रोलर बनाते हैं। हम application/controllers/welcome.php में स्थित डिफ़ॉल्ट CodeIgniter कंट्रोलर का उपयोग करेंगे। इसके सोर्स कोड को निम्न कोड से बदलें।
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('opinion_poll_model'); } public function index() { if ($this->input->post('submitbutton') && !$this->input->post('vote')) { echo "<script>alert('You did not vote!');</script>"; } if ($this->input->post('vote')) { $this->opinion_poll_model->add_vote($this->input->post('vote')); $data['total_votes'] = $this->opinion_poll_model->total_votes(); $data['rows'] = $this->opinion_poll_model->get_results(); $this->load->view('results', $data); } else { $this->load->view('opinion_poll_form'); } } } /* End of file welcome.php */ /* Location: ./application/controllers/welcome.php */ ?>
यहाँ,
- “if (!defined('BASEPATH')) exit('No direct script access permitted');” यह सुनिश्चित करता है कि उपयोगकर्ता सीधे नियंत्रक वर्ग तक नहीं पहुँच पाते हैं
- “क्लास वेलकम CI_Controller को बढ़ाता है…” हमारा नियंत्रक CI_Controller क्लास को बढ़ाता है
- “पब्लिक फंक्शन __construct()” CI_Controller के क्लास कंस्ट्रक्टर मेथड को कॉल करता है और हमारे Opinion_poll_model मॉडल को लोड करता है
- “पब्लिक फंक्शन इंडेक्स()…” वह फंक्शन है जो index.php को मैप करता है। यह कोड इग्निटर के इनपुट क्लास का उपयोग करके यह जांचता है कि कोई वोट सबमिट किया गया है या नहीं, इसे डेटाबेस में जोड़ता है और फिर परिणाम प्रदर्शित करता है। यदि इनपुट क्लास का पोस्ट ऐरे खाली है, तो यह वोटिंग पेज लोड करता है।
- “$this->input->post('…')” कोडइग्निटर इनपुट क्लास है जो $_POST वैश्विक वेरिएबल की सामग्री को ग्रहण करता है।
- “$this->opinion_poll_model->add_vote($this->input->post('vote'))” डेटाबेस में वोट जोड़ने के लिए मॉडल की add_vote विधि को कॉल करता है।
हमारे विचार बनाना
पिछले उदाहरण से याद करें कि हमारे पास दो HTML पेज थे, एक वोटिंग के लिए और दूसरा परिणामों के लिए। हम अपने व्यू बनाने के लिए न्यूनतम संशोधनों के साथ उसी HTML कोड का उपयोग करेंगे। application/views डायरेक्टरी में निम्न फ़ाइलें बनाएँ
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript Library?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
आइए अब परिणाम पृष्ठ results.php बनाएं
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
हमारे एप्लिकेशन का परीक्षण
मान लें कि आपके एप्लिकेशन की रूट डायरेक्टरी ciopinion है, तो ब्राउज़ करें http://localhost/ciopionpoll/
ओके बटन पर क्लिक करें, आपको निम्नलिखित चेतावनी संदेश दिखाई देगा
अपने पसंदीदा उम्मीदवार को वोट दें और फिर OK पर क्लिक करें आपको निम्नलिखित परिणाम पृष्ठ दिखाई देगा
निष्कर्ष
कोडइग्निटर एक सीखने और उपयोग करने में आसान PHP MVC फ्रेमवर्क है जो अनुप्रयोगों को विकसित करने में लगने वाले समय को बहुत कम कर सकता है।
कोडइग्निटर एक सीखने और उपयोग करने में आसान PHP MVC फ्रेमवर्क है जो अनुप्रयोगों को विकसित करने में लगने वाले समय को बहुत कम कर सकता है।
सारांश
- फ्रेमवर्क लाइब्रेरीज़ का एक समूह है जो सामान्य कार्यों का आंशिक कार्यान्वयन प्रदान करता है।
- PHP में कई ओपन सोर्स परिपक्व और परीक्षण किए गए MVC फ्रेमवर्क हैं।
- एक अच्छा विकास दृष्टिकोण डेटा को प्रस्तुति से अलग करता है और अनुप्रयोग में एकल प्रवेश बिंदु के उपयोग को प्रोत्साहित करता है।
- पारंपरिक PHP अनुप्रयोग जो अनुप्रयोग डिजाइन की सर्वोत्तम प्रथाओं का पालन करते हैं, उन्हें न्यूनतम संशोधनों के साथ MVC फ्रेमवर्क में पोर्ट किया जा सकता है।