Próbuję nauczyć się podstaw REST i znalazłem całkiem dobry tutorial (przynajmniej pomógł mi zrozumieć podstawy). This is the tutorial I've been following.Podstawy REST z php
W tym fragmencie kodu autor pokazuje, w jaki sposób strona może korzystać z czegoś w rodzaju www.example.com/restaurant/42 instead of /?restaurant_ID=42
.
Może ktoś wyjaśnić, dlaczego ta służy
explode("/", $path, 2);
instead of
explode("/", $path);
W tym przykładzie będą generować taką samą tablicę, ale co jeśli to jest już ścieżka takich jak Restaurant/item/3
? Czy nie chcesz rozdzielić wszystkiego? Jak widać, w dalszej części tego bloku używają eksplodować bez definiowania limitu. Czy pierwszy jest po prostu zasobem? (Chyba kontroler gdyby był 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 Nie tylko na wyraźne wyjaśnienie oryginalnego kodu, ale pokazujący prostszy sposób na osiągnięcie tego samego. –
Rozumiem, co robi eksplozja (w zależności od tego, jak się rozdziela), po prostu zastanawiam się, dlaczego chcesz użyć limitu, zamiast całkowicie oddzielać ścieżkę (nie określając limitu)? W tym przykładzie, czy potrzebujemy tylko zasobu, gdy eksploduje używany jest limit 2? Tak czy inaczej, czy nie możemy po prostu wywołać $ array [0], aby uzyskać zasób? Dzięki – user1104854
@user Jak już powiedziałem, istnieją * łatwiejsze sposoby na zrobienie tego. Ale sposób, w jaki działa autor twojego kodu, jest również ważny. Po prostu myślał o tym problemie inaczej i dotarł do rozwiązania za pomocą innej metody. A może myślał w ten sposób, że idea tego, co stara się zrobić, jest lepiej przekazywana, dzięki czemu kod jest bardziej czytelny. Nie ma innego powodu. – deceze