कुछ दिन पहले, मैंने एक बुनियादी राउटर बनाना सीखा जो यूआरएल को नियंत्रकों पर मैप करता है। अब, मुझे उन्नत कार्यक्षमता वाला एक बेहतर राउटर बनाने के लिए इसे बढ़ाने की आवश्यकता है। एक बेहतर राउटर बनाने के लिए जो छिपे हुए इनपुट के साथ काम करता है, सबसे पहले प्रोजेक्ट से मूल राउटर.php फ़ाइल को हटा दें और एक नया बनाएं। चलो शुरू करो।
हमें एक बेहतर राउटर बनाने की आवश्यकता है जो विशिष्ट नियंत्रकों या कार्यों के लिए यूआरएल को कुशलतापूर्वक मैप करता है, जिससे हमारे एप्लिकेशन को अनुरोधों को संभालने और उन्हें उचित हैंडलर तक रूट करने की अनुमति मिलती है।
छिपे हुए इनपुट के साथ काम करने की बेहतर राउटर की क्षमता नोट आईडी को यूआरएल में उजागर किए बिना नियंत्रक को पास करके सुरक्षित नोट हटाने में सक्षम बनाती है, जिससे उपयोगकर्ता के हस्तक्षेप को रोका जा सकता है।
राउटर फ़ाइल बनाने के लिए, हमें राउटर क्लास को नेमस्पेस के साथ आरंभ करना होगा, इस मामले में, कोर।
सार्वजनिक समारोह (सामान्य पैरामीटर)
चूंकि राउटर क्लास बनाया गया है तो हमें इसमें सार्वजनिक कार्यों को परिभाषित करना होगा और सभी में समान पैरामीटर हैं जैसे प्राप्त करना, पोस्ट करना, हटाना, पैच करना और आवश्यक मार्गों के रूप में रखना जो हमारी वेबसाइट को यह निर्धारित करने में मदद करते हैं कि जब कोई किसी निश्चित स्थान पर जाता है तो उसे क्या करना चाहिए पृष्ठ। इन फ़ंक्शंस के पैरामीटर समान हैं, जो उन्हें समान कार्य करने में सक्षम बनाते हैं।
public function get($uri, $controller) { $this->add('GET', $uri, $controller); } public function post($uri, $controller) { $this->add('POST', $uri, $controller); } public function delete($uri, $controller) { $this->add('DELETE', $uri, $controller); } public function patch($uri, $controller) { $this->add('PATCH', $uri, $controller); } public function put($uri, $controller) { $this->add('PUT', $uri, $controller); }विधि जोड़ें
चूंकि सभी सार्वजनिक कार्यों में समान पैरामीटर होते हैं तो हम ऐड विधि का उपयोग करते हैं और इसे समान पैरामीटर देते हैं और केवल इसे अन्य कार्यों में कॉल करते हैं। इसका उपयोग रूटिंग मैप में एक नया रूट जोड़ने के लिए किया जाता है, जिसमें तीन पैरामीटर होते हैं: अनुरोध विधि, मिलान करने के लिए यूआरआई पैटर्न, और अनुरोध को संभालने के लिए नियंत्रक फ़ाइल।
public function add($method, $uri, $controller) { $this->routes[] = [ 'uri' => $uri, 'controller' => $controller, 'method' => $method ]; }मार्ग विधि
यहां, हम किसी दिए गए यूआरएल पर हमारे एप्लिकेशन की प्रतिक्रिया निर्धारित करने के लिए रूट विधि को परिभाषित करते हैं, अनुरोध को संभालने के लिए इसे संबंधित नियंत्रक पर मैप करते हैं।
public function route($uri, $method) { foreach ($this->routes as $route) { if ($route['uri'] === $uri && $route['method'] === strtoupper($method)) { return require base_path($route['controller']); } } $this->abort(); }स्ट्रटूपर फ़ंक्शन
रूट विधि में, हम केस-असंवेदनशील मिलान सुनिश्चित करते हुए, एक स्ट्रिंग को अपरकेस में बदलने के लिए strtoupper फ़ंक्शन का उपयोग करते हैं।
strtoupper($method)संरक्षित कार्य (निरस्त)
राउटर.php फ़ाइल में हमने एबॉर्ट विधि को एक सुरक्षा जाल के रूप में परिभाषित किया है, यदि हमारी वेबसाइट सही मार्ग नहीं ढूंढ पाती है तो एक त्रुटि पृष्ठ प्रदर्शित करती है।
protected function abort($code = 404) { http_response_code($code); require base_path("views/{$code}.php"); die(); }मार्ग परिभाषाएँ
आखिरी बात रूट्स.php फ़ाइल में रूटिंग कॉन्फ़िगरेशन को परिभाषित करना है, यूआरएल को संबंधित नियंत्रक क्रियाओं में मैप करना है।
$router->get('/', 'controllers/index.php'); $router->get('/about', 'controllers/about.php'); $router->get('/contact', 'controllers/contact.php'); $router->get('/notes', 'controllers/notes/index.php'); $router->get('/note', 'controllers/notes/show.php'); $router->get('/notes/create', 'controllers/notes/create.php');प्राप्त विधि अनुरोध विधि (जीईटी), यूआरएल पैटर्न निर्दिष्ट करती है और इसे नियंत्रक फ़ाइल में मैप करती है।
निष्कर्ष
निष्कर्ष रूप में, हमने एक बेहतर राउटर बनाया है जो विशिष्ट नियंत्रक विधियों के लिए यूआरएल को कुशलतापूर्वक मैप करता है, जिससे अनुरोधों को संभालने के लिए अधिक संरचित और रखरखाव योग्य दृष्टिकोण सक्षम होता है और हमारी वेबसाइट के समग्र प्रदर्शन और स्केलेबिलिटी में सुधार होता है।
मुझे आशा है कि आप इसे स्पष्ट रूप से समझ गए होंगे।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3