我正在尝试学习 REST 的基础知识,并且找到了一个非常好的教程(至少它帮助我理解了基础知识)。这是我一直在关注的教程。
无论如何,在这段代码片段中,作者展示了网站如何使用类似www.example.com/restaurant/42 instead of /?restaurant_ID=42
.
谁能解释为什么使用它
explode("/", $path, 2);
instead of
explode("/", $path);
对于此示例,它们将生成相同的数组,但如果它是更长的路径,例如Restaurant/item/3
?你不想把所有东西都分开吗?如您所见,在此块的更下方,他们确实使用了没有定义限制的爆炸。第一个只是为了资源吗?(如果它是 MVC,我猜是控制器)
<?php
// assume autoloader available and configured
$path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
$path = trim($path, "/");
@list($resource, $params) = explode("/", $path, 2); //why is limit used here?
$resource = ucfirst(strtolower($resource));
$method = strtolower($_SERVER["REQUEST_METHOD"]);
$params = !empty($params) ? explode("/", $params) : array(); //no limit here?
if (class_exists($resource)) {
try {
$resource = new $resource($params);
$resource->{$method}();
}
catch (Exception $e) {
header("HTTP/1.1 500 Internal Server Error");
}
}
else {
header("HTTP/1.1 404 File Not Found");
}