सबसे पहले, हम Index.php, Router.php, और .htaccess फ़ाइलें बनाएंगे।
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]
यदि उपयोगकर्ता सीधे Router.php तक पहुंचने के लिए यूआरएल दर्ज करता है तो यह कोड 404 प्रतिक्रिया दिखाएगा।
Router.php में पेज क्लास जोड़ें
class Page { protected static bool $Return_404 = true; }404 पेज वापस करने के लिए एक स्थिर बूलियन वैरिएबल बनाएं। हम इसे डिफ़ॉल्ट के रूप में सत्य पर सेट करेंगे।
अब हम 404 पृष्ठ के लिए एक फ़ंक्शन जोड़ते हैं।protected static function Return_404(): void { (file_exists("./Pages/404.php")) ? require_once "./Pages/404.php" : http_response_code(404); }यहाँ, मैंने पेज फ़ोल्डर के अंदर एक 404 पेज रखा है। आप इसे अपनी इच्छानुसार किसी भी फोल्डर में रख सकते हैं।
हम "फ़ाइल" फ़ंक्शन भी जोड़ेंगे।
protected static function File(string $file): string { if (!empty($file)) { (str_contains($file, "?")) ? $file = strtok($file, '?') : $file; ($file[strlen($file) - 1] === "/") ? $file = rtrim($file, "/") : $file; } return $file; }यह फ़ंक्शन जांच करेगा कि क्या अनुरोध यूआरएल में एक क्वेरी स्ट्रिंग है या "/" के साथ समाप्त होता है और इसे हटा देगा।
मैं "?" से पहले स्ट्रिंग मान प्राप्त करने के लिए "स्ट्रोक" स्ट्रिंग फ़ंक्शन का उपयोग करता हूं। मैं जानता हूं कि "स्ट्रोक" का उपयोग इस तरह नहीं किया जाना चाहिए, लेकिन यह काम करता है और मुझे अनावश्यक रूप से जटिल एल्गोरिदम करने से बचाता है। मैं "/" को हटाने के लिए "rtrim" स्ट्रिंग फ़ंक्शन का उपयोग करता हूं यदि यह स्ट्रिंग के आखिरी में निहित है।Router.php में रूट क्लास जोड़ें
class Routes { public static array $Route = array( "" => "Pages/home.php", "/about" => "Pages/about.php", ); }यहां, मैं रूटिंग संग्रहीत करने के लिए एक स्थिर सरणी बनाता हूं।
इस सारणी में "अनुरोधित यूआरएल" => "फ़ाइल स्थान" शामिल है।
मैंने सभी पेज फ़ाइलों को पेज फ़ोल्डर में डाल दिया है। आप उन्हें अपनी इच्छानुसार कहीं भी रख सकते हैं।Router.php में राउटर क्लास जोड़ें
राउटर क्लास उस पेज क्लास से विस्तारित होगी जिसे हमने पहले ही ऊपर बनाया है।
ध्यान दें कि "" => "पेज/होम.php", होम पेज के लिए है।class Router extends Page { }अब, हम वह फ़ंक्शन लिखेंगे जो जांच करेगा कि अनुरोधित फ़ाइल राउटर क्लास में मौजूद है या नहीं।
public static function Run(): void { $requested_file = self::File($_SERVER["REQUEST_URI"]); foreach (Routes::$Route as $request => $file) { if ($requested_file === $request) { if (file_exists($file)) { self::$Return_404 = false; require $file; } else echo "Error"; } } if (self::$Return_404) self::Return_404(); }यह फ़ंक्शन पहले जांचता है कि अनुरोधित फ़ाइल $Route सरणी में है। यदि यह मौजूद है, तो स्थिर बूलियन $Return_404 को गलत पर सेट किया गया है ताकि 404 पेज दिखाई न दे और पेज फ़ाइल प्राप्त न हो। यदि मौजूद नहीं है, तो यह 404 पृष्ठ लौटाएगा।
यदि यह मौजूद है लेकिन पेज फ़ोल्डर में कोई फ़ाइल नहीं है, तो फ़ंक्शन "त्रुटि" प्रतिध्वनि करेगा। आप यहां इको "एरर" के बजाय 404 पेज दिखा सकते हैं।अंतिम राउटर.php फ़ाइल इस तरह दिखेगी।
$file) { if ($requested_file === $request) { if (file_exists($file)) { self::$Return_404 = false; require $file; } else echo "Error"; } } if (self::$Return_404) self::Return_404(); } } class Routes { public static array $Route = array( "" => "Pages/home.php", "/about" => "Pages/about.php", ); }Index.php
index.php में, हम राउटर क्लास से "रन" फ़ंक्शन का उपयोग करेंगे।
Router पेजों के सभी HTML कोड "बॉडी" टैग में होंगे।
पेज बनाएं
अंत में, पेज फ़ोल्डर में होम.php, about.php और 404.php बनाएं।
home.php
Home page
के बारे में.php
about page
404.php
404 page
जांचें कि कोड "xampp" या "PHP सर्वर" एक्सटेंशन के साथ काम कर रहा है या नहीं।
यदि आपको कोई त्रुटि आती है, तो बेझिझक मुझे बताएं। एक्सडी
आप यहां जीथब रिपॉजिटरी भी देख सकते हैं:
टोकिगिन / पेज-राउटर
Php-राउटर रिपॉजिटरी से मैनुअल राउटर
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3