Re: New globals for PUT and DELETE
| From: | Kris Craig | Date: | Tue, 14 Oct 2014 13:17:16 +0000 |
| Subject: | Re: New globals for PUT and DELETE | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-77979@lists.php.net to get a copy of this message | ||
On Tue, Oct 14, 2014 at 6:09 AM, Ben Ramsey <ben@benramsey.com> wrote:
> On Oct 14, 2014, at 7:47 AM, Kris Craig <kris.craig@gmail.com> wrote:
>
> > Hey guys,
> >
> > Does anybody know why we have $_GET and $_POST, but not $_PUT and
> > $_DELETE? As far as I can tell, the only way to get these out currently
> is
> > to parse their values by reading the incoming stream directly.
> >
> > Is there a reason why we don't want this or is it just that nobody has
> > actually written it yet?
> >
> > —Kris
>
> This is due to the history of HTML forms sending POST requests with the
> Content-Type application/x-www-form-urlencoded. That is, all the fields are
> key/value pairs and may be easily converted into a PHP array. If you use
> POST with application/json, nothing appears in $_POST, for example.
>
> In practice, we could support $_PUT and $_DELETE for requests that use
> application/x-www-form-urlencoded, but most folks implementing PUT and
> DELETE do not use application/x-www-form-urlencoded for these requests.
>
> I would venture to say that most people implementing PUT requests accept
> application/json and most DELETE requests have no body at all. So, $_PUT
> and $_DELETE superglobals wouldn’t make sense.
>
> -Ben
>
>
I'm not following your logic, Ben. Just because there are a lot of people
out there who don't understand REST, doesn't mean we shouldn't add support
for the other methods. Besides, if anyone wants to develop a truly RESTful
API in PHP-- which a lot of devs are doing every day-- not giving them
$_PUT and $_DELETE is what wouldn't make any sense. I'm writing an API now
and the lack of those two globals has proven to be a real pain in the ass.
The Content-Type argument really isn't an issue since the API developer
should be setting the right headers for the request method, anyway.
I don't see any gain in not making those globals available. All it does is
present both inconvenience and inconsistency for any REST-based project.
--Kris