यह आमतौर पर (एक फ़ाइल है कि अनुरोध के आधार पर अलग-अलग कोड निष्पादित करता है) की तरह एक नियम के साथ एक एकल प्रवेश बिंदु करने के लिए सभी अनुरोधों मार्ग द्वारा किया जाता है मार्गों की एक सूची के खिलाफ - एक नियंत्रक कार्रवाई (एमवीसी अनुप्रयोगों में) या निष्पादन के दूसरे पथ के अनुरोध से मेल खाने वाले पैटर्न का मैपिंग। फ्रेमवर्क में अक्सर एक मार्ग शामिल होता है जो बैकअप मार्ग के रूप में अनुरोध से नियंत्रक और कार्रवाई को स्वयं अनुमानित कर सकता है।
एक छोटी सी, सरल उदाहरण:
<?php
// Define a couple of simple actions
class Home {
public function GET() { return 'Homepage'; }
}
class About {
public function GET() { return 'About page'; }
}
// Mapping of request pattern (URL) to action classes (above)
$routes = array(
'/' => 'Home',
'/about' => 'About'
);
// Match the request to a route (find the first matching URL in routes)
$request = '/' . trim($_SERVER['REQUEST_URI'], '/');
$route = null;
foreach ($routes as $pattern => $class) {
if ($pattern == $request) {
$route = $class;
break;
}
}
// If no route matched, or class for route not found (404)
if (is_null($route) || !class_exists($route)) {
header('HTTP/1.1 404 Not Found');
echo 'Page not found';
exit(1);
}
// If method not found in action class, send a 405 (e.g. Home::POST())
if (!method_exists($route, $_SERVER["REQUEST_METHOD"])) {
header('HTTP/1.1 405 Method not allowed');
echo 'Method not allowed';
exit(1);
}
// Otherwise, return the result of the action
$action = new $route;
$result = call_user_func(array($action, $_SERVER["REQUEST_METHOD"]));
echo $result;
पहले विन्यास के साथ संयुक्त, यह एक सरल स्क्रिप्ट है कि आप domain.com/about
जैसे URL का उपयोग करने की अनुमति देगा। उम्मीद है कि यह आपको समझने में मदद करता है कि यहां क्या हो रहा है।
मेरा उत्तर देखें [PHP स्क्रिप्ट के भीतर से यूआरएल की उपस्थिति कैसे बदलें] (http://stackoverflow.com/questions/8392965/how-to-change-appearance-of-url-from-within-a- php-script/8392997 # 8392997) सबसे अधिक ढांचा क्या करता है सभी अनुरोधों को एक फ़ाइल में रीडायरेक्ट करता है जो सब कुछ संभालता है। – Ibu