एक राउटर क्या करता है, यह समझने के लिए, आपको पहले समझना होगा कि रीराइट इंजन क्या है। से विकिपीडिया लेख (जोर मेरा):
एक पुनर्लेखन इंजन एक सॉफ्टवेयर है जो वेब URL की उपस्थिति (URL पुनर्लेखन) को संशोधित करता है। वेब पेजों के लिए छोटे और अधिक प्रासंगिक दिखने वाले लिंक प्रदान करने के लिए पुनर्निर्मित URL (कभी-कभी संक्षिप्त, फैंसी URL या खोज इंजन के अनुकूल - SEF) के रूप में जाना जाता है। तकनीक एक वेब पेज और दुनिया के लिए पेश किए गए URL को उत्पन्न करने के लिए उपयोग की जाने वाली फ़ाइलों के बीच अलगाव की एक डिग्री जोड़ती है ।
जब एक पुनर्लेखन इंजन का उपयोग किया जाता है तो आपके पास URL और PHP स्क्रिप्ट के बीच 1: 1 का संबंध नहीं होता है। उसी लेख से एक उदाहरण:
http://example.com/wiki/index.php?title=Page_title
के रूप में फिर से लिखा जा सकता है:
http://example.com/wiki/Page_title
तकनीक का उपयोग करने के विभिन्न लाभ हैं । चूंकि PHP आमतौर पर अपाचे के साथ कसकर युग्मित होती है, इसलिए आमतौर पर इस्तेमाल किया जाने वाला रीराइट इंजन अपाचे का mod_rewrite है ।
यदि आप URL को फिर से लिखना चाहते हैं, तो आपको किसी प्रकार की रूटिंग की आवश्यकता है, क्योंकि रूटिंग URL को लेने की प्रक्रिया है, इसे घटकों में तोड़ना और यह निर्णय लेना कि कॉल करने के लिए वास्तविक स्क्रिप्ट क्या है। मानक रूटर के लिए प्रलेखन पेज Zend फ्रेमवर्क के रूप में इस प्रक्रिया बताते हैं:
रूटिंग एक यूआरआई एंडपॉइंट (यूआरआई का वह हिस्सा जो आधार URL के बाद आता है) लेने की प्रक्रिया है और यह निर्धारित करने के लिए कि मॉड्यूल, नियंत्रक, और उस नियंत्रक की कार्रवाई को निर्धारित करने के लिए इसे प्राप्त करना चाहिए मापदंडों में विघटित करना चाहिए।
आजकल अधिकांश PHP फ्रेमवर्क MVC पैटर्न पर आधारित होते हैं , और MVC फ्रेमवर्क पर प्रक्रिया कुछ इस तरह से होती है * :
- ब्राउज़र URL की ओर संकेत करता है,
- वेब सर्वर कैच का अनुरोध और आगे यह एक आम प्रवेश बिंदु करने के लिए, आम तौर पर एक
index.php
स्क्रिप्ट,
index.php
URL मिलता है और रूटिंग प्रक्रिया शुरू करता है।
- URL को पैरामीटर में विघटित किया जाता है, जहां पहला नियंत्रक है, दूसरा क्रिया विधि है, और बाकी को गतिशील पैरामीटर माना जाता है,
- यदि पहला पैरामीटर से मेल खाने वाला एक नियंत्रक वर्ग मौजूद है, तो एक नियंत्रक ऑब्जेक्ट को तत्काल किया जाता है,
- आमतौर पर कंट्रोलर ऑब्जेक्ट का एक फंक्शन एक्शन मेथड कहलाता है और इसका रिटर्न वही है जो वास्तव में ब्राउजर में वापस आता है।
नियंत्रकों और विधियों से मेल खाते पैरामीटर आमतौर पर नियमित अभिव्यक्तियों के माध्यम से मेल खाते हैं जो जटिल और गतिशील रूटिंग पैटर्न को संभालने में सक्षम होते हैं, जिन्हें मार्गों के रूप में जाना जाता है। मार्गों के अच्छे उदाहरण CodeIgniter के URI रूटिंग प्रलेखन पृष्ठ पर पाए जा सकते हैं :
$ मार्ग ['पत्रिकाओं'] = "ब्लॉग";
$ मार्ग ['ब्लॉग / जो'] = "ब्लॉग / उपयोगकर्ता / 34";
$ मार्ग ['उत्पाद / (: कोई भी)'] = "सूचीपत्र / उत्पाद_दृश्य";
$ मार्ग ['उत्पाद / (: संख्या)'] = "कैटलॉग / उत्पाद_सेप_बाय_िड / $ 1";
$route
सरणी कुंजी के रूप में पैटर्न और में मूल्यों के रूप में जिसके परिणामस्वरूप कार्यों रखती controller/action_method/dynamic_parameter
प्रारूप।
* यह विहित प्रक्रिया के वर्णन के रूप में नहीं है, बस एक ओवरसाइम्प्लीफाइड स्पष्टीकरण है।