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

Slim 2.0 टमिंग (Taming)

by
Read Time:16 minsLanguages:

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

Slim एक लाइटवेट फ्रेमवर्क है जो अपने छोटे पदचिह्न के लिए बहुत सारे पंच को पैक करता है। इसमें एक अविश्वसनीय रूटिंग सिस्टम है, और आपके रास्ते में आने के बिना काम करने के लिए ठोस आधार प्रदान करता है। चलो मैं तुम्हें दिखाती हूँ!

लेकिन यह कहना सही नहीं है कि Slim में कोई समस्याएं नहीं हैं; आपका एप्लिकेशन बढ़ने के साथ ही यह एक-फ़ाइल सेटअप अव्यवस्थित हो जाता है। इस आलेख में, हम समीक्षा करेंगे कि Slim एप्लिकेशन को न केवल बनाए रखने के लिए, बल्कि इसकी कार्यक्षमता में सुधार करने और चीजों को व्यवस्थित और व्यवस्थित रखने के लिए कैसे करें।


Vanilla Slim

आइए समस्या की पहचान करने के लिए कुछ सामान्य Slim कोड को देखकर शुरू करें। Composer के माध्यम से Slim इनस्टॉल करने के बाद, आपको Slim ऑब्जेक्ट का एक उदाहरण बनाने और अपने रुट्स को परिभाषित करने की आवश्यकता है:

चलो Slim ऑब्जेक्ट को "controller" में बदल दें।

पहले मेथड कॉल रूट URI (/) के लिए एक नया रूट सेट करता है, और दिए गए फ़ंक्शन को उस रूट से जोड़ता है। यह काफी वर्बोस है, अभी तक सेटअप करने में आसान है। दूसरा मेथड कॉल URI testPage के लिए एक रूट को परिभाषित करता है। सप्लाई किये गए मेथड के अंदर, हम व्यू को प्रस्तुत करने के लिए Slim के render() मेथड का उपयोग करते हैं।

यहां पहली समस्या है: वर्तमान कॉन्टेक्स्ट में यह फ़ंक्शन (एक क्लोजर) नहीं कहा जाता है और Slim की फीचर्स तक पहुंचने का कोई तरीका नहीं है। यही कारण है कि हमें Slim ऐप के रिफरेन्स को पास करने के लिए use कीवर्ड का उपयोग करने की आवश्यकता है।

दूसरा मुद्दा Slim के आर्किटेक्चर से पैदा होता है; यह सब एक फाइल में परिभाषित करने के लिए है। बेशक, आप वैरिएबल को दूसरी फाइल में आउटसोर्स कर सकते हैं, लेकिन यह सिर्फ गन्दा हो जाता है। आदर्श रूप में, हम अलग-अलग कंपोनेंट्स में फ्रेमवर्क को मॉड्यूलर करने के लिए कंट्रोलर्स को जोड़ने की क्षमता चाहते हैं। बोनस के रूप में, यह अच्छा होगा अगर इन कंट्रोलर्स ने Slim के फीचर्स तक नेटिव पहुंच प्रदान की, बंद करने में संदर्भों को पारित करने की आवश्यकता को हटा दिया।


एक छोटी सी रिवर्स इंजीनियरिंग

यह बहस योग्य है कि ओपन-सोर्स प्रोजेक्ट से रीडिंग सोर्स कोड को रिवर्स इंजीनियरिंग माना जाता है, लेकिन यह वह शब्द है जिसके साथ मैं रहूंगा। हम समझते हैं कि Slim का उपयोग कैसे करें, लेकिन हुड के नीचे क्या चल रहा है? आइए इस प्रश्न की जड़ तक पहुंचने के लिए एक और जटिल रूट देखें:

यह रूट की परिभाषा शब्द, name के साथ एक कोलन का उपयोग करती है। यह प्लेसहोल्डर है, और इसके स्थान पर उपयोग किया जाने वाली वैल्यू फ़ंक्शन पर पास हो जाती है। उदाहरण के लिए, /users/gabriel इस रूट से मेल खाता है, और 'gabriel' फ़ंक्शन पर पास हो जाता है। रूट, /users, दूसरी तरफ, एक मैच नहीं है क्योंकि इसमें पैरामीटर गायब है।

यदि आप इसके बारे में तार्किक रूप से सोचते हैं, तो रूट को संसाधित करने के लिए कई कदम उठाए जाएंगे।

  • स्टेप एक: जांच करें कि रूट वर्तमान URI से मेल खाता है या नहीं।
  • स्टेप दो: URI से सभी पैरामीटर्स को निकालें।
  • स्टेप तीन: कनेक्टेड क्लोजर को कॉल करें और निकाले गए पैरामीटर को पास करें।

प्रक्रिया को बेहतर ऑप्टिमाइज़ करने के लिए, Slim - regex कॉलबैक और ग्रुप्स का उपयोग करके - प्लेसहोल्डर्स को स्टोर करता है क्योंकि यह मैचों के लिए जांच करता है। यह Slim तैयार होने पर कनेक्ट किए गए फ़ंक्शन को एक्सेक्यूट करने की आवश्यकता को छोड़कर, दो स्टेप को एक में जोड़ता है। a

पिछले उदाहरण में, रुट्स को पार्स करते समय हमारे पास Slim के फीचर्स तक पहुंच थी, लेकिन हमें Slim ऑब्जेक्ट रिफरेन्स पारित करने की आवश्यकता थी क्योंकि यह अन्यथा फ़ंक्शन के एक्सेक्यूशन रिफरेन्स में अनुपलब्ध होगा। अधिकांश एप्लिकेशन के लिए आपको बस इतना ही चाहिए, क्योंकि आपके एप्लिकेशन का लॉजिक कंट्रोलर में होना चाहिए।

इसे ध्यान में रखते हुए, आइए "routing" भाग को क्लास में निकालें और Slim ऑब्जेक्ट को "controller" में बदलें।


शुरू करना

शुरू करने के लिए, अगर आप पहले से ऐसा नहीं कर चुके हैं तो "Vanilla Slim" को डाउनलोड और इंस्टॉल करें। मैं यह मानने जा रहा हूं कि आपके पास कंपोजर इन्सटाल्ड है, लेकिन यदि नहीं, तो स्टेप्स का पालन करें

एक नई डायरेक्टरी के भीतर, composer.json नाम की एक फ़ाइल बनाएं, और निम्न को संलग्न करें:

एक टर्मिनल विंडो में, बताई गयी डायरेक्टरी पर नेविगेट करें और composer install टाइप करें। मैं इन पैकेजों के माध्यम से आपको चलाऊंगा, अगर यह Slim का उपयोग पहली बार है।

तकनीकी रूप से आपको इस ट्यूटोरियल के लिए Slim एक्स्ट्रा या Twig की आवश्यकता नहीं है, लेकिन मुझे स्टैण्डर्ड PHP टेम्पलेट्स के बजाय Twig का उपयोग करना पसंद है। यदि आप Twig का उपयोग करते हैं, हालांकि, आपको Slim एक्स्ट्रा की आवश्यकता है क्योंकि यह Twig और Slim के बीच एक इंटरफ़ेस प्रदान करता है।

अब हमारी कस्टम फाइलें जोड़ें, और हम vendors फ़ोल्डर में एक डायरेक्टरी जोड़कर शुरू करेंगे। मैं अपनी वाली को Nettuts का नाम दूंगा, लेकिन जो कुछ भी आप चाहें उसका नाम देने के लिए स्वतंत्र महसूस करें। यदि आप अभी भी टर्मिनल में हैं, तो सुनिश्चित करें कि आपकी टर्मिनल विंडो प्रोजेक्ट की डायरेक्टरी में है और निम्न टाइप करें:

अब, इस नए फ़ोल्डर के रिफरेन्स को जोड़कर composer.json एडिट करें:

हम चाहते हैं कि हमारा ऐप Nettuts नेमस्पेस से automatic रूप से क्लासेज लोड कर ले, इसलिए यह कंपोज़र को vendor फ़ोल्डर से शुरू होने वाले PSR-0 स्टैण्डर्ड में Nettuts के सभी रिक्वेस्ट्स को मैप करने के लिए कहता है।

अब एक्सेक्यूट करें:

यह नया रिफरेन्स शामिल करने के लिए ऑटोलॉअडर रीकमपाइल करें। इसके बाद, Nettuts डायरेक्टरी में Router.php नाम की एक फ़ाइल बनाएं, और निम्न को दर्ज करें:

हमने देखा कि प्रत्येक रूट ऑब्जेक्ट में स्वयं निहित (self-contained) कार्य होता है जो यह निर्धारित करता है कि यह प्रदान किए गए URI से मेल खाता है या नहीं। इसलिए, हम रुट्स और एक फंक्शन को उनके माध्यम से पार्स करना चाहते हैं। हमें नए रूट जोड़ने के लिए और वर्तमान HTTP रिक्वेस्ट से URI को रीट्रीव करने का एक तरीका भी चाहिए।

आइए कुछ मेंबर-वेरिएबल और कन्स्ट्रक्टर जोड़कर शुरू करें:

हमने routes वैरिएबल को रुट्स को शामिल करने के लिए सेट किया है, और request वेरिएबल को Slim Request ऑब्जेक्ट को स्टोर करने के लिए सेट किया है। इसके बाद, हमें रूट जोड़ने की क्षमता की आवश्यकता है। सर्वोत्तम प्रथाओं के साथ चिपके रहने के लिए, मैं इसे दो स्टेप्स में तोड़ दूंगा:

a

path syntaxpath syntaxpath syntax

वैकल्पिक रूप से, आप डिफ़ॉल्ट वैल्यू का उपयोग करने के लिए कुछ पैरामीटर छोड़ सकते हैं। उदाहरण के लिए, यदि आप इसे छोड़ देते हैं तो क्लास का नाम Main के साथ बदल दिया जाएगा, index छोड़े गए फ़ंक्शन नामों के लिए डिफ़ॉल्ट है, और HTTP मेथड के लिए डिफ़ॉल्ट any है। बेशक, any वास्तविक HTTP मेथड नहीं है, लेकिन यह एक वैल्यू है कि Slim सभी HTTP मेथड प्रकारों से मेल खाने के लिए उपयोग करता है।

addRoutes फ़ंक्शन एक foreach लूप के साथ शुरू होता है जो रुट्स के माध्यम से चक्र करता है। इसके बाद, हम डिफ़ॉल्ट HTTP मेथड सेट करते हैं, वैकल्पिक रूप से प्रदान किये गए मेथड के साथ इसे ओवरराइड करते हैं यदि @ सिंबल मौजूद है। फिर हम कॉलबैक रिट्रीव करने के लिए शेष पाथ को पास करते हैं, और इसे रूट से जोड़ते हैं। अंत में, हम ऐरे में रूट को जोड़ते हैं।

आइए processCallback() फ़ंक्शन को देखें:

दूसरा मुद्दा Slim के आर्किटेक्चर से पैदा होता है; यह सब एक फाइल में परिभाषित करने के लिए है।

हमने पहले डिफॉल्ट क्लास को Main पर सेट किया है, और कॉलन सिंबल मिलने पर उस क्लास को ओवरराइड करें। इसके बाद, हम यह निर्धारित करते हैं कि कोई फ़ंक्शन परिभाषित किया गया है और यदि आवश्यक हो तो डिफ़ॉल्ट मेथड index का उपयोग करें। फिर हम क्लास और फंक्शन के नामों को बंद करने के लिए पास करते हैं और इसे रूट पर रीटर्न कर देते हैं।

क्लोज़र के अंदर, हम नेमस्पेस के साथ क्लास का नाम प्रेपेंड करते हैं। इसके बाद हम निर्दिष्ट क्लास का एक नया इंस्टैंस बनाते हैं और इस फ़ंक्शन में दिए गए आर्ग्यूमेंट्स की सूची रिट्रीव करते हैं। यदि आपको याद है, जबकि Slim चेक करता है कि कोई रूट मेल खाता है, तो यह धीरे-धीरे रूट से वाइल्डकार्ड के आधार पर पैरामीटर की एक सूची बनाता है। यह फ़ंक्शन (func_get_args()) को ऐरे में पास पैरामीटर प्राप्त करने के लिए उपयोग किया जा सकता है। फिर, call_user_func_array() मेथड का उपयोग करके हम कंट्रोलर को पैरामीटर पास करते समय क्लास और फ़ंक्शन निर्दिष्ट करने में सक्षम बनाते है।

एक बार जब आप इसे समझ लेंगे तो यह एक बहुत जटिल कार्य नहीं है, लेकिन यह क्लोज़र के आने पर एक बहुत अच्छा उदाहरण है।

संक्षेप में, हमने अपने एक फंक्शन जोड़ा Router जो हमे एक अस्सोसिएटिव ऐरे पास करने की अनुमति देता है जिसमे रुट्स और पाथ्स शामिल है जो क्लासेज और फंक्शन्स को मैप करते हैं। अंतिम स्टेप रुट्स को प्रोसेस करना और उस मैच को एक्सेक्यूट करना है। Slim नेमिंग कन्वेंशन के साथ रखते हुए, चलिए इसे run कहते हैं:

हम display404 वैरिएबल को true पर सेट करके शुरू करते हैं, जो नहीं पाए गए रुट्स का प्रतिनिधित्व करते हैं। अगर हमें एक मिलान करने वाला रूट मिल जाए, तो हम इसे false पर सेट करेंगे और एरर मैसेज को बाईपास करेंगे। इसके बाद, हम मौजूदा URI और HTTP मेथड को पुनर्प्राप्त करने के लिए Slim के रिक्वेस्ट ऑब्जेक्ट का उपयोग करते हैं।

हम इस जानकारी का उपयोग चक्र के माध्यम से और हमारे ऐरे से मिलान ढूंढने के लिए करेंगे।

एक बार रूट ऑब्जेक्ट के matches() फ़ंक्शन एक्सेक्यूट हो जाने पर, आप पार्स किए गए पैरामीटर को रिट्रीव करने के लिए getParams() को कॉल करने में सक्षम होते हैं। उस फ़ंक्शन और getCallable() मेथड का उपयोग करके, हम क्लोज़र को एक्सेक्यूट करने और आवश्यक पैरामीटर को पार करने में सक्षम हैं। आखिरकार, यदि कोई रूट वर्तमान URI से मेल नहीं खाता है तो हम 404 मैसेज प्रदर्शित करते हैं।

चलिए कंट्रोलर क्लास बनाते हैं जो इन रुट्स के लिए कॉलबैक रखता है। यदि आप साथ चल रहे हैं, तो हो सकता है कि आपने महसूस किया हो कि हमने कभी प्रोटोकॉल या क्लास टाइप को मजबूर नहीं किया है। यदि आप कंट्रोलर क्लास नहीं बनाना चाहते हैं, तो कोई भी क्लास ठीक से काम कर लेगी।

तो कंट्रोलर क्लास क्यों बना रहे हैं? संक्षिप्त जवाब यह है कि हमने अभी भी Slim का उपयोग नहीं किया है! हमने HTTP रिक्वेस्ट और रुट्स के लिए Slim के कुछ हिस्सों का उपयोग किया, लेकिन इसका पूरा पॉइंट Slim की प्रॉपर्टीज तक आसानी से पहुंचना था। हमारी कंट्रोलर क्लास Slim के मेथड्स तक पहुंच प्राप्त करने, वास्तविक Slim क्लास को एक्सटेंड करेगी।

आप इसे आसानी से छोड़ सकते हैं और Slim को सीधे अपने कंट्रोलर्स से घटा सकते हैं।


कंट्रोलर का निर्माण

यह कंट्रोलर मूल रूप से इसे Slim को मॉडिफाई करने की अनुमति देता है जबकि इसे अभी भी vanilla रखता है। फ़ाइल को Controller.php नाम दें, और निम्न कोड लिखें:

जब आप Slim को प्रारंभ करते हैं, तो आप एप्लिकेशन के डीबग मोड से टेम्पलेटिंग इंजन तक विभिन्न सेटिंग्स में पास कर सकते हैं। कन्स्ट्रक्टर में किसी भी वैल्यू को कड़ी कोडिंग करने के बजाय, मैं उन्हें settings.php नामक फ़ाइल से लोड करता हूं और उस ऐरे को पैरेंट के कन्स्ट्रक्टर में पास करता हूं।

चूंकि हम Slim को एक्सटेंड कर रहे हैं, मैंने सोचा कि 'model' सेटिंग जोड़ने के लिए यह अच्छा होगा, जिससे लोगों को सीधे डेटा कंट्रोलर को अपने डेटा ऑब्जेक्ट को हुक कर दिया जा सके।

वह सेक्शन है जिसे आप उपरोक्त कोड के बीच में देख सकते हैं। हम जांचते हैं कि model सेटिंग सेट की गई है और यदि आवश्यक हो तो इसे कंट्रोलर की data प्रॉपर्टी पर असाइन करें।

अब अपने प्रोजेक्ट के रूट (composer.json फ़ाइल के साथ फ़ोल्डर) में settings.php नाम की एक फ़ाइल बनाएं, और निम्न दर्ज करें:

मॉडल के एक्सेप्शन के साथ ये स्टैण्डर्ड Slim सेटिंग्स हैं। model प्रॉपर्टी को जो भी वैल्यू सौंपी गयी है वह data वैरिएबल को पास की गयी है; यह एक ऐरे, कोई और क्लास, एक स्ट्रिंग, आदि हो सकती है... मैं इसे किसी ऑब्जेक्ट पर सेट करता हूं क्योंकि मुझे ब्रैकेट (ऐरे) नोटेशन के बजाय -> नोटेशन का उपयोग करना पसंद है।

अब हम सिस्टम का टेस्ट कर सकते हैं। यदि आपको Router क्लास में याद है, तो हम क्लास के नाम को "Controller" नेमस्पेस के साथ प्रीपेड करते हैं। Nettuts नेमस्पेस के लिए psr-0 परिभाषा के बाद composer.json खोलें और सीधे निम्न जोड़ें:

फिर पहले की तरह, बस ऑटोलोडर को डंप करें:

अगर हम रूट डायरेक्टरी में बेस पाथ सेट करते हैं, तो नेमस्पेस Controller हमारे ऐप के रूट में "Controller" नामक फ़ोल्डर में मैप करेगा। तो उस फ़ोल्डर को बनाएं:

इस फ़ोल्डर के अंदर, Main.php नाम की एक नई फ़ाइल बनाएं। फ़ाइल के अंदर, हमें नेमस्पेस घोषित करने और एक क्लास बनाने की आवश्यकता है जो हमारे Controller बेस क्लास को एक्सटेंड करती है:

यह जटिल नहीं है, लेकिन चलिए इसे संयम में लेते हैं। इस क्लास में, हम दो फंक्शन्स को परिभाषित करते हैं; उनके नाम से कोई फर्क नहीं पड़ता क्योंकि हम उन्हें बाद में रुट्स पर मैप करेंगे। यह ध्यान रखना महत्वपूर्ण है कि मैं पहले फ़ंक्शन में कंट्रोलर (यानी मॉडल) से प्रॉपर्टीज तक सीधे पहुंचता हूं, और वास्तव में, आपके पास Slim के सभी कमांड्स तक पूर्ण पहुंच होगी।

आइए अब वास्तविक पब्लिक फाइल बनाएं। अपने प्रोजेक्ट के रुट में एक नई डायरेक्टरी बनाएं और इसे public नाम दें। जैसा कि इसके नाम से तात्पर्य है, यह सभी पब्लिक सामान रहेगा। इस फ़ोल्डर के अंदर, index.php नामक एक फ़ाइल बनाएं और निम्न दर्ज करें:

हम कंपोजर की ऑटोलोडिंग लाइब्रेरी शामिल करते हैं और हमारे राउटर का एक नया इंस्टैंस बनाते हैं। फिर हम दो रुट्स को परिभाषित करते हैं, उन्हें राउटर ऑब्जेक्ट में जोड़ते हैं और इसे एक्सेक्यूट करते हैं।

आपको Apache में mod_rewrite चालू करने की आवश्यकता है (या एक अलग वेब सर्वर का उपयोग कर इसी के समकक्ष)। इसे सेट अप करने के लिए, public डायरेक्टरी के अंदर .htaccess नाम की एक फ़ाइल बनाएं और इसे निम्न से भरें:

अब इस फ़ोल्डर की सभी रिक्वेस्ट (जो वास्तविक फ़ाइल से मेल नहीं खाती हैं) को index.php में स्थानांतरित कर दिया जाएगा।

अपने ब्राउज़र में, अपनी public डायरेक्टरी पर नेविगेट करें, और आपको एक पेज दिखना चाहिए जो "Hello World" कहता है। "/test" पर नेविगेट करें, और आपको "Test Page" मैसेज दिखना चाहिए। यह बहुत रोमांचक नहीं है, लेकिन हमने सभी लॉजिक कोड को इंडिविजुअल कंट्रोलर्स में सफलतापूर्वक स्थानांतरित कर दिया है।


राउंड दो

Slim CodeIgniter नहीं है, यह Symfony नहीं है और यह Laravel नहीं है।

तो हमारे पास बुनियादी फंक्शनलिटी है, लेकिन कुछ रफ़ किनारे हैं। चलो राउटर से शुरू करते हैं।

अभी तक, यदि कोई रूट मौजूद नहीं है, तो हम एक साधारण एरर मैसेज प्रदर्शित करते हैं। एक वास्तविक एप्लीकेशन में, हम एक नियमित पेज लोड करने के समान फंक्शनलिटी चाहते हैं। हम Slim की एबिलिटी को लोड करने की क्षमता का लाभ उठाना चाहते हैं, साथ ही रिस्पांस के एरर कोड को सेट करना चाहते हैं।

आइए एक नया क्लास वैरिएबल जोड़ें जो एक वैकल्पिक पाथ रखता है (बस अन्य रुट्स की तरह)। फ़ाइल के शीर्ष पर, रिक्वेस्ट ऑब्जेक्ट परिभाषा के बाद सीधे निम्न लाइन जोड़ें:

इसके बाद, चलिए एक ऐसा फ़ंक्शन बनाएं जो पाथ को स्वीकार करता है और इसे कॉलबैक फ़ंक्शन असाइन करता है। यह अपेक्षाकृत सरल है क्योंकि हमने पहले से ही इस फंक्शनलिटी को सारणीबद्ध (abstracted) किया है:

अब एरर मैसेज को प्रदर्शित करने के बजाय वैकल्पिक रूप से कॉलबैक एक्सेक्यूट करने के लिए run कमांड को एडजस्ट करें:

कंट्रोलर क्लास को खोलें। यह वह जगह है जहां आप Slim की फंक्शनलिटी को अपनी पर्सनल प्रेफरेंस में एडजस्ट कर सकते हैं। उदाहरण के लिए, मैं व्यू लोड करते समय फ़ाइल एक्सटेंशन को छोड़ने का विकल्प चाहूंगा। तो $this->render("home.php"); लिखने के बजाय मैं यह लिखना चाहूंगा: $this->render("home"); ऐसा करने के लिए रेंडर मेथड को ओवरराइड करें:

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

यह सिर्फ एक उदाहरण है, लेकिन हमें render() मेथड में कोई अन्य परिवर्तन करना चाहिए। उदाहरण के लिए, यदि आप अपने सभी डाक्यूमेंट्स पर एक ही हेडर और फुटर पेज लोड करते हैं, तो आप फ़ंक्शन renderPage() जोड़ सकते हैं। यह फ़ंक्शन रेगुलर हैडर और फुटर लोड करने के लिए कॉल के बीच पारित व्यू को लोड करेगा।

इसके बाद, चलिए कुछ व्यू को लोड करने पर एक नज़र डालें। अपने प्रोजेक्ट के रुट में "Views" नामक फ़ोल्डर बनाएं (लोकेशन और नाम settings.php फ़ाइल में एडजस्ट किया जा सकता है)। आइए test.php और error.php नामक दो व्यूज को बनाएं।

test.php के अंदर, निम्न जोड़ें:

और error.php फ़ाइल के अंदर, इसे दर्ज करें:

इसके अलावा, index() फ़ंक्शन को निम्न में बदलकर Main कंट्रोलर को मॉडिफाई करें:

यहां, हम टेस्ट व्यू रेंडर करते हैं जिसे हमने अभी बनाया है और डाटा में डिस्प्ले करने के लिए पास किया है। इसके बाद, पैरामीटर के साथ एक रूट को आज़माएं। test() फ़ंक्शन को निम्न में बदलें:

यहां, हम URI से पेज के टाइटल को रिट्रीव करके इसे एक कदम आगे ले जाते हैं। अंतिम, लेकिन किसी से कम नहीं, चलो 404 पेज के लिए एक फ़ंक्शन जोड़ें:

हम render() फ़ंक्शन के तीसरे वैकल्पिक पैरामीटर का उपयोग करते हैं, जो रिस्पांस के HTTP स्टेटस कोड को सेट करता है।

हमारा अंतिम एडिट index.php में हमारे नए रुट्स को शामिल करने के लिए है:

अब आपको तीन रुट्स पर नेविगेट करने और उनके रेस्पेक्टिव व्यूज को देखने में सक्षम होना चाहिए।


निष्कर्ष

हमने जो कुछ भी पूरा किया है, उसके साथ आपको निश्चित रूप से कुछ प्रश्न हैं कि Slim पहले से ही इन मॉडिफिकेशन की पेशकश क्यों नहीं करता है। वे लॉजिकल लगते हैं, वे Slim के इम्प्लीमेंटेशन से बहुत दूर नहीं जाते हैं, और वे बहुत समझ में आते हैं। Josh Lockhart (Slim के निर्माता) ने इसे सर्वश्रेष्ठ रखा:

"Slim CodeIgniter नहीं है, यह Symfony नहीं है, और यह Laravel नहीं है। Slim Slim है। इसे हल्के वजन और मज़ेदार बनाने के लिए बनाया गया था, जबकि अभी भी लगभग 80% सबसे आम समस्याएं हल करने में सक्षम हैं। एज वाले मामलो के बारे में चिंता करने की बजाय, यह सरल होने और आसानी से पढ़ने के लिए कोडबेस पर केंद्रित है। "

कभी-कभी, डेवलपर्स के रूप में, हम क्रेजी सिनेरियो को कवर करते हुए इतने पकड़े जाते हैं कि हम वास्तव में महत्वपूर्ण चीज़ों के बारे में भूल जाते हैं: कोड। Mods, इस ट्यूटोरियल में से एक की तरह, कोड की सादगी और वेरबोसिटी के कारण ही संभव है। तो हां, कुछ एज के मामले हो सकते हैं जिन्हें विशेष ध्यान देने की आवश्यकता है, लेकिन आपको एक सक्रिय कम्युनिटी मिलती है, जो मेरी राय में, कॉस्ट का भारी वजन कम करती है।

मुझे आशा है कि आप इस लेख का आनंद लेंगे। यदि आपके कोई प्रश्न या कमेंट हैं, तो नीचे एक मैसेज छोड़ दें। आप #nettuts चैनल पर Freenode पर IRC चैनल के माध्यम से मुझसे संपर्क भी कर सकते हैं।

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.