私はRESTの基本を学ぼうとしていますが、かなり良いチュートリアルを見つけました(少なくとも、基本を理解するのに役立ちました)。これは私がフォローしているチュートリアルです。
とにかく、このコードスニペットでは、作成者はWebサイトがのようなものを使用する方法の基本を示していますwww.example.com/restaurant/42 instead of /?restaurant_ID=42
。
なぜこれが使われるのか誰かが説明できますか
explode("/", $path, 2);
instead of
explode("/", $path);
この例では、同じ配列を生成しますが、それが次のような長いパスの場合はどうなりますRestaurant/item/3
か?すべてを分けてみませんか?ご覧のとおり、このブロックのさらに下では、制限を定義せずにexplodeを使用しています。最初のものは単にリソースのためのものですか?(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");
}