Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Symfony रूटिंग कॉम्पोनेन्ट का उपयोग कर PHP ऍप्लिकेशन्स में रूटिंग सेट अप करें

by
Difficulty:IntermediateLength:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

आज, हम Symfony रूटिंग कॉम्पोनेन्ट के माध्यम से जाएंगे, जो आपको अपने PHP ऍप्लिकेशन्स में रूटिंग सेट करने की अनुमति देता है।

Symfony रूटिंग कॉम्पोनेन्ट क्या है?

Symfony रूटिंग कॉम्पोनेन्ट एक बहुत लोकप्रिय रूटिंग कॉम्पोनेन्ट है जो कई फ्रेमवर्क द्वारा एडाप्ट किया जाता है और आप अपने PHP एप्लीकेशन में रूट सेटअप करना चाहते हैं, तो बहुत फ्लेक्सिबिलिटी प्रदान करता है।

यदि आपने एक कस्टम PHP एप्लिकेशन बनाया है और एक फीचर से समृद्ध रूटिंग लाइब्रेरी की तलाश में है, तो Symfony रूटिंग कॉम्पोनेन्ट एक लायक दिखने से बहुत अधिक है। यह आपको YAML फॉर्मेट में आपके एप्लिकेशन के लिए रूट परिभाषित करने की अनुमति देता है।

इंस्टालेशन और कॉन्फ़िगरेशन से शुरू होने पर, हम रूट कॉन्फ़िगरेशन के लिए कॉम्पोनेन्ट के विभिन्न ऑप्शंस को प्रदर्शित करने के लिए वास्तविक दुनिया के उदाहरणों के माध्यम से जायेंगे। इस लेख में, आप सीखेंगे:

  • इंस्टालेशन और कॉन्फ़िगरेशन
  • बेसिक रूट कैसे सेटअप करें
  • YAML फ़ाइल से रूट कैसे लोड करें
  • आल-इन-वन राऊटर का उपयोग कैसे करें

इंस्टालेशन और कॉन्फ़िगरेशन

इस सेक्शन में, हम आपके PHP ऍप्लिकेशन्स में रूटिंग सेट अप करने के लिए आवश्यक लाइब्रेरीज को सेटअप करने जा रहे हैं। मुझे लगता है कि आपने अपने सिस्टम में कंपोजर इनस्टॉल किया है क्योंकि हमें Packagist पर उपलब्ध आवश्यक लाइब्रेरीज को इनस्टॉल करने की आवश्यकता होगी।

एक बार जब आप कंपोजर इनस्टॉल कर लेंगे, तो आगे बढ़ें और निम्न कमांड का उपयोग कर कोर रूटिंग कॉम्पोनेन्ट इनस्टॉल करें।

यद्यपि रूटिंग कॉम्पोनेन्ट स्वयं आपके एप्लीकेशन में व्यापक रूटिंग फीचर्स को प्रदान करने के लिए पर्याप्त है, फिर भी हम आगे बढ़ेंगे और कुछ अन्य कंपोनेंट्स को इनस्टॉल करेंगे, साथ ही साथ हमारे जीवन को आसान बनाने और मौजूदा कोर रूटिंग फंक्शनलिटी को समृद्ध करने के लिए भी।

आरंभ करने के लिए, हम आगे बढ़ेंगे और HttpFoundation कॉम्पोनेन्ट इनस्टॉल करेंगे, जो PHP ग्लोबल वेरिएबल और रिस्पांस-संबंधी फंक्शन्स के लिए ऑब्जेक्ट-ओरिएंटेड रैपर प्रदान करता है। यह सुनिश्चित करता है कि आपको $_GET, $_POST और सीधे की तरह ग्लोबल वेरिएबल्स तक पहुंचने की आवश्यकता नहीं है।

इसके बाद, यदि आप PHP कोड की बजाय YAML फ़ाइल में अपने एप्लिकेशन रूट को परिभाषित करना चाहते हैं, तो यह YAML कॉम्पोनेन्ट है जो बचाव के लिए आता है क्योंकि यह आपको YAML स्ट्रिंग्स को PHP arrays में परिवर्तित करने में मदद करता है और इसके विपरीत भी।

अंत में, हम कॉन्फ़िगरेशन कॉम्पोनेन्ट इनस्टॉल करेंगे, जो कई यूटिलिटी क्लासेज को प्रारंभ करने और विभिन्न प्रकार की फ़ाइल जैसे YAML, INI, XML इत्यादि में परिभाषित कॉन्फ़िगरेशन वैल्यूज के साथ सौदा करने के लिए प्रदान करता है। हमारे मामले में, हम इसे रूट लोड करने के लिए उपयोग करेंगे YAML फ़ाइल से।

तो यह इंस्टालेशन का हिस्सा है, लेकिन आप इसका उपयोग कैसे कर रहे हैं? वास्तव में, यह आपके एप्लीकेशन में Composer द्वारा बनाई गई autoload.php फ़ाइल को शामिल करने का विषय है, जैसा कि निम्न स्निपेट में दिखाया गया है।

बेसिक रूट सेटअप करें

पिछले section में, हम आवश्यक रूटिंग कंपोनेंट्स की इंस्टालेशन के माध्यम से गए। अब, आप तुरंत अपने PHP एप्लिकेशन में रूटिंग सेट अप करने के लिए तैयार हैं।

आइए आगे बढ़ें और निम्न कंटेंट के साथ basic_routes.php फ़ाइल बनाएं।

Symfony रूटिंग कॉम्पोनेन्ट का उपयोग करके रूटिंग सेट करना आमतौर पर नीचे लिस्टेड स्टेप्स की एक सीरीज के माध्यम से जाता है।

  • अपने प्रत्येक एप्लीकेशन रुट्स के लिए Route ऑब्जेक्ट शुरू करें।
  • RouteCollection ऑब्जेक्ट में सभी रूट ऑब्जेक्ट्स जोड़ें।
  • RequestContext ऑब्जेक्ट को प्रारंभ करें जिसमें वर्तमान रिक्वेस्ट कॉन्टेक्स्ट जानकारी है।
  • RouteCollection ऑब्जेक्ट और RequestContext ऑब्जेक्ट को पास करके UrlMatcher ऑब्जेक्ट को प्रारंभ करें।

विभिन्न routes के लिए Route ऑब्जेक्ट शुरू करें

चलो आगे बढ़ें और एक प्रेट्टी बेसिक foo रूट परिभाषित करें।

Route कन्स्ट्रक्टर का पहला आर्गुमेंट URI पाथ है, और दूसरा आर्गुमेंट कस्टम ऐट्रिब्यूट्स का array है जिसे आप वापस करना चाहते हैं जब यह विशेष रूट मेल खाता है। आम तौर पर, यह कंट्रोलर और मेथड का संयोजन होगा जिसे आप इस रूट से रिक्वेस्ट करते समय कॉल करना चाहते हैं।

इसके बाद, आइए पैरामीटरयुक्त रूट पर नज़र डालें।

उपर्युक्त रूट URI से मेल खाता है जैसे foo/1, foo/123 और इसी तरह। कृपया ध्यान दें कि हमने {id} पैरामीटर को केवल न्यूमेरिक वैल्यूज तक सीमित कर दिया है, और इसलिए यह {id} पैरामीटर को स्ट्रिंग के रूप में प्रदान किए जाने के बाद से foo/bar जैसे URI से मेल नहीं खाएगा।

RouteCollection ऑब्जेक्ट में सभी रूट ऑब्जेक्ट्स जोड़ें

अगला स्टेप रूट ऑब्जेक्ट्स को जोड़ना है जिसे हमने पिछले सेक्शन में RouteCollection ऑब्जेक्ट में प्रारंभ किया है।

जैसा कि आप देख सकते हैं, यह बहुत सरल है क्योंकि आपको रूट ऑब्जेक्ट्स जोड़ने के लिए RouteCollection ऑब्जेक्ट के add मेथड का उपयोग करने की आवश्यकता है। add मेथड का पहला आर्गुमेंट रूट का नाम है, और दूसरा आर्गुमेंट रूट ऑब्जेक्ट है।

RequestContext ऑब्जेक्ट प्रारंभ करें

इसके बाद, हमें RequestContext ऑब्जेक्ट को प्रारंभ करने की आवश्यकता है, जिसमें वर्तमान रिक्वेस्ट कॉन्टेक्स्ट जानकारी है। जब हम UrlMatcher ऑब्जेक्ट को प्रारंभ करते हैं तो हमें इस ऑब्जेक्ट की आवश्यकता होगी क्योंकि हम इसे एक पल में करेंगे।

UrlMatcher ऑब्जेक्ट शुरू करें

अंत में, हमें रूट और कॉन्टेक्स्ट जानकारी के साथ UrlMatcher ऑब्जेक्ट को प्रारंभ करने की आवश्यकता है।

अब, हमारे पास हमारे रुट्स से मेल खाने वाली हर चीज है।

रुट्स को मैच कैसे करें

यह UrlMatcher ऑब्जेक्ट का match मेथड है जो आपको पूर्वनिर्धारित रुट्स के सेट के खिलाफ किसी भी रूट से मिलान करने की अनुमति देता है।

match मेथड URI को अपना पहला आर्गुमेंट मानती है और इसे पूर्वनिर्धारित रुट्स के खिलाफ मैच करने की कोशिश करती है। यदि रूट मिलता है, तो वह उस रूट से जुड़े कस्टम ऐट्रिब्यूट्स को वापस कर देता है। दूसरी ओर, यदि वर्तमान URI से जुड़े कोई रूट नहीं है तो यह ResourceNotFoundException एक्सेप्शन थ्रो करता है।

हमारे मामले में, हमने वर्तमान URI को $context ऑब्जेक्ट से प्राप्त करके प्रदान किया है। इसलिए, यदि आप http://your-domain/basic_routes.php/foo URL तक पहुंच रहे हैं, तो $context->getPathInfo() foo को लौटाता है, और हमने पहले ही foo URI के लिए एक रूट परिभाषित कर दिया है, इसलिए इसे हमें निम्नलिखित वापस करें।

अब, आगे बढ़ें और http://your-domain/basic_routes.php/foo/123 URL तक पहुंचकर पैरामीटरकृत रूट का परीक्षण करें।

यह काम करता है अगर आप देख सकते हैं कि id पैरामीटर उपयुक्त वैल्यू 123 के साथ बाउंड है।

इसके बाद, आइए http://your-domain/basic_routes.php/unknown-route जैसे गैर-मौजूदा रूट तक पहुंचने का प्रयास करें, और आपको निम्न मैसेज दिखना चाहिए।

तो इस तरह आप match मेथड का उपयोग कर रूट पा सकते हैं।

इसके अलावा, आप अपने एप्लीकेशन में लिंक उत्पन्न करने के लिए रूटिंग कॉम्पोनेन्ट का भी उपयोग कर सकते हैं। प्रदान की गई RouteCollection और RequestContext ऑब्जेक्ट्स, UrlGenerator आपको विशिष्ट रुट्स के लिए लिंक बनाने की अनुमति देता है।

generate मेथड का पहला आर्गुमेंट रूट का नाम है, और दूसरा आर्गुमेंट वह array है जिसमें पैरामीटरयुक्त रूट होने पर पैरामीटर हो सकते हैं। उपरोक्त कोड को /basic_routes.php/foo/123 URL उत्पन्न करना चाहिए।

YAML फ़ाइल से लोड रूट्स

पिछले सेक्शन में, हमने Route और RouteCollection ऑब्जेक्ट्स का उपयोग करके हमारे कस्टम रूट बनाए। वास्तव में, Routing कॉम्पोनेन्ट विभिन्न तरीकों की पेशकश करता है जिन्हें आप तुरंत रुट्स से चुन सकते हैं। आप YamlFileLoader, XmlFileLoader, और PhpFileLoader जैसे विभिन्न लोडर से चुन सकते हैं।

इस सेक्शन में, हम YAML फ़ाइल से रूट लोड करने के तरीके को देखने के लिए YamlFileLoader लोडर से गुज़रेंगे।

YAML फ़ाइल को रूट करें

आगे बढ़ें और निम्नलिखित कंटेंट के साथ routes.yaml फ़ाइल बनाएं।

एक उदाहरण फ़ाइल

इसके बाद, आगे बढ़ें और load_routes_from_yaml.php फ़ाइल को निम्न कंटेंट के साथ बनाएं।

इस मामले में जो एकलौती चीज जो अलग है वह है जिस तरह से हम रूट शुरू करते हैं!

हमने YamlFileLoader लोडर का उपयोग routes.yaml फाइल से रूट लोड करने के लिए किया है Yaml फ़ाइल को सीधे PHP में ही शुरू करने के बजाय। इसके अलावा, सब कुछ वही है और उसी परिणाम को basic_routes.php फ़ाइल के रूप में प्रस्तुत करना चाहिए।

ऑल-इन-वन राऊटर

अंत में इस सेक्शन में, हम Router क्लास के माध्यम से जाएंगे, जो आपको कोड की कम लाइनों के साथ जल्दी से रूटिंग सेट करने की अनुमति देता है।

आगे बढ़ें और निम्नलिखित कंटेंट के साथ all_in_one_router.php फ़ाइल बनाएं।

सब कुछ काफी उसी के समान है, सिवाय इसके कि हमने आवश्यक डेपेंडेन्सीज़ के साथ Router ऑब्जेक्ट को तुरंत चालू कर दिया है।

उस जगह के साथ, आप सीधे रूट मैपिंग के लिए Router ऑब्जेक्ट के match मेथड का उपयोग कर सकते हैं।

इसके अलावा, आपको रूट लाने के लिए Router ऑब्जेक्ट की getRouteCollection मेथड का उपयोग करने की आवश्यकता होगी।

निष्कर्ष

आगे बढ़ें और रूटिंग कॉम्पोनेन्ट में उपलब्ध अन्य ऑप्शंस का पता लगाएं- मुझे आपके विचार सुनना अच्छा लगेगा!

आज, हमने Symfony रूटिंग कॉम्पोनेन्ट की खोज की, जो PHP ऍप्लिकेशन्स में रूटिंग को कार्यान्वित करता है। रास्ते के साथ, हमने राउटिंग कॉम्पोनेन्ट के विभिन्न पहलुओं को प्रदर्शित करने के लिए कुछ उदाहरण दिए।

मुझे आशा है कि आपने इस लेख का आनंद लिया है, और नीचे दिए गए फ़ीड का उपयोग करके अपने विचार पोस्ट करने के लिए स्वतंत्र महसूस करें!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.