6
我想了解REST的基礎知識,我發現一個很好的教程(至少它幫助我瞭解基礎知識)。 This is the tutorial I've been following。REST的基礎知識與PHP
無論如何,在這段代碼片段中,作者展示了一個網站如何使用諸如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");
}
+1不僅清楚地表示原來的代碼,但顯示達到相同的簡單的方法。 –
我明白爆炸正在做什麼(至於它如何分離),我只是想知道爲什麼你想要使用限制而不是完全分開路徑(通過不指定限制)?在這個例子中,當使用爆炸時,我們是否只需要資源,限制爲2?無論哪種方式,我們不能只是調用$ array [0]來獲取資源?謝謝 – user1104854
@user正如我所說,有*更容易的方法來做到這一點。但是你的代碼的作者的方式也是有效的。他只是想着不同的問題,並用不同的方法來解決問題。或者,也許他認爲這種方式讓他想要做的事情變得更好,這使得代碼更具可讀性。沒有其他原因。 – deceze