जैसा कि आप उम्मीद कर सकते हैं, ऐसा करने के कई तरीके हैं।
उदाहरण के लिए, Slim Framework में, मार्ग इंजन का एक उदाहरण हो सकता है folllowing (पैटर्न ${OBJECT}->${REQUEST METHOD}(${PATTERM}, ${CALLBACK})
के आधार पर):
$app->get("/Home", function() {
print('Welcome to the home page');
}
$app->get('/Profile/:memberName', function($memberName) {
print('I\'m viewing ' . $memberName . '\'s profile.');
}
$app->post('/ContactUs', function() {
print('This action will be fired only if a POST request will occure');
}
तो, initialized उदाहरण ($app
) प्रति अनुरोध विधि एक विधि (हो जाता है उदाहरण के लिए प्राप्त करें, पोस्ट करें, डालें, हटाएं आदि) और दूसरे पैरामीटर के रूप में पहला पैरामीटर और कॉलबैक के रूप में मार्ग प्राप्त करें।
मार्ग टोकन प्राप्त कर सकता है - जो "चर" है जो रनटाइम पर कुछ डेटा (जैसे सदस्य का नाम, आलेख आईडी, संगठन स्थान का नाम या जो भी हो, आपको हर रूटिंग नियंत्रक की तरह) के आधार पर बदल जाएगा।
व्यक्तिगत रूप से, मुझे इस तरह से पसंद है लेकिन मुझे नहीं लगता कि यह एक उन्नत ढांचे के लिए पर्याप्त लचीला होगा।
जब से मैं जेडएफ और Yii साथ वर्तमान में काम कर रहा हूँ, मैं एक रूटर मैं एक कंपनी के लिए एक रूपरेखा के भाग के रूप बना लिया है मैं के लिए काम कर रहा हूँ का एक उदाहरण है:
मार्ग इंजन आधारित है रेगेक्स पर (@ ग्रेबॉट के समान), लेकिन दो-तरफा वार्तालाप मिला, इसलिए यदि आपका कोई ग्राहक mod_rewrite (अपाचे में) नहीं चला सकता है या उसके सर्वर पर रीराइट नियम जोड़ सकता है, तो वह अभी भी पारंपरिक का उपयोग कर सकता है क्वेरी स्ट्रिंग वाले यूआरएल।
फ़ाइल एक सरणी, तो इसके दोनों शामिल हैं, प्रत्येक आइटम इस उदाहरण के समान है:
$_FURLTEMPLATES['login'] = array(
'i' => array(// Input - how the router parse an incomming path into query string params
'pattern' => '@Members/Login/[email protected]',
'matches' => array('Application' => 'Members', 'Module' => 'Login'),
),
'o' => array(// Output - how the router parse a query string into a route
'@Application=Members(&|&)Module=Login/[email protected]' => 'Members/Login/'
)
);
तुम भी इस तरह के रूप में और अधिक जटिल संयोजन, उपयोग कर सकते हैं:
$_FURLTEMPLATES['article'] = array(
'i' => array(
'pattern' => '@CMS/Articles/([\d]+)/[email protected]',
'matches' => array('Application' => "CMS",
'Module' => 'Articles',
'Sector' => 'showArticle',
'ArticleID' => '$1'),
),
'o' => array(
'@Application=CMS(&|&)Module=Articles(&|&)Sector=showArticle(&|&)ArticleID=([\d]+)@' => 'CMS/Articles/$4'
)
);
लब्बोलुआब , जैसा कि मुझे लगता है, यह है कि संभावनाएं अनंत हैं, यह केवल इस बात पर निर्भर करती है कि आप अपने ढांचे को कितना जटिल बनाना चाहते हैं और आप इसके साथ क्या करना चाहते हैं।
यदि यह है, उदाहरण के लिए, केवल एक वेब सेवा या सरल वेबसाइट रैपर होने का इरादा है - बस स्लिम फ्रेमवर्क की लेखन की शैली के साथ जाएं - बहुत आसान और अच्छा दिखने वाला कोड।
हालांकि, यदि आप इसका उपयोग कर जटिल साइट विकसित करना चाहते हैं, तो मुझे लगता है कि रेगेक्स समाधान है।
शुभकामनाएं! :)
दूसरा उदाहरण बहुत कुछ है जो मैं वास्तव में करने के बारे में सोच रहा था ... (RoR शैली) - मैं आपके कोड को देख लूंगा। – Mez
यह Django पायथन के समान है। – kta