2011-03-18 17 views
6

मैं एक साधारण ढांचे का उपयोग कर रहा हूं जो क्वेरी पैरामीटर के आधार पर अनुरोधों को संभालता है।क्या PHP के लिए पुन: प्रयोज्य राउटर/प्रेषक है?

http://example.com/list 
http://example.com/items/1234 

मुझे पता है कि मार्गों और भेजने का काम करता है, और मैं इसे अपने आप लिख सकते हैं:

http://example.com/index.php?event=listPage 
http://example.com/index.php?event=itemView&id=1234 

मैं इस के सामने साफ यूआरएल डाल करने के लिए ताकि आप इसे इस तरह से उपयोग कर सकते हैं चाहता हूँ। लेकिन मैं वहां सभी कोड का लाभ उठाऊंगा जो पहले से ही इस समस्या को हल करता है। क्या किसी को जेनेरिक लाइब्रेरी या कक्षा के बारे में पता है जो इस कार्यक्षमता को प्रदान करता है, लेकिन मुझे मुझे रूट मैच से जो कुछ भी चाहिए, उसे वापस कर देगा? कुछ इस तरह।

$Router = new Router(); 
$Router->addRoute('/items/:id', 'itemView', array('eventName' => 'itemView')); 

$Router->resolve('/items/1234'); 
// returns array('routeName' => 'itemView', 
//    'eventName' => 'itemView, 
//    'params' => array('id' => '1234')) 

अनिवार्य रूप से मैं पथ से हल किए गए मूल्यों के आधार पर खुद को प्रेषण करने में सक्षम होगा। अगर यह बहुत अधिक परेशानी नहीं है (और जब तक लाइसेंस परमिट नहीं है) मैं इसे ढांचे से बाहर उठाना नहीं चाहूंगा। लेकिन आम तौर पर मुझे ढांचे में रूटिंग/प्रेषण मिलता है ताकि इस तरह के पुनर्वितरण के लिए थोड़ा सा एकीकृत हो सके। और मेरी खोजों से यह संकेत मिलता है कि अगर वे ढांचे का उपयोग नहीं कर रहे हैं तो लोग इसे स्वयं लिख रहे हैं।

  • मार्गों से बाहर
  • पार्स पैरामीटर पेट के अंकन या रेगुलर एक्सप्रेशन से अंकन के साथ मार्गों को निर्दिष्ट और उन्हें किसी भी तरह वापसी तो की तरह
  • समर्थन तेजी से रिवर्स लुकअप:

    एक अच्छा समाधान निम्नलिखित का समर्थन करेगा

    $Router->get('itemView', array('id' => '1234')); 
    // returns 'items/1234' 
    

किसी भी मदद के मैं की सराहना की

+0

आप सिम्फनी 2 रूटिंग घटक पर भी एक नज़र डाल सकते हैं! – markus

+0

[मूर] (https://github.com/jeffturcotte/moor) पर एक नज़र डालें और [यहां] जवाब दें (http://stackoverflow.com/questions/11787176/manage-url-routes-in-own-php -फ्रेमवर्क) और [यहां] (http://stackoverflow.com/questions/20179984/custom-url-routing-with-php-and-regex)। – user

उत्तर

8

GluePHP आप जो चाहते हैं उसके बहुत करीब हो सकता है। यह एक सरल सेवा प्रदान करता है: कक्षाओं के लिए यूआरएल मानचित्र करने के लिए।

require_once('glue.php'); 

$urls = array(
    '/' => 'index', 
    '/(?P<number>\d+)' => 'index' 
); 

class index { 
    function GET($matches) { 
     if (array_key_exists('number', $matches)) { 
      echo "The magic number is: " . $matches['number']; 
     } else { 
      echo "You did not enter a number."; 
     } 
    } 
} 

glue::stick($urls); 
+1

धन्यवाद। यह काफी आसान है, और मैं इसे जो चाहिए उसे अनुकूलित करने में सक्षम हो सकता हूं। मैं चाहता हूं कि रूटिंग एक प्रेषण को रद्द कर दिया गया हो। – Marco

संबंधित मुद्दे