Hi all,

tl;dr: Gauging interest in an extension for server-side PHP request and 
response objects (*not* HTTP messages per se; see below) prior to writing an 
RFC for them on the wiki.

* * *

From time to time we've all heard the complaint that PHP has no built-in 
request object to represent the execution environment. Userland ends up writing 
these themselves, and those are usually tied to a specific library collection 
or framework. The same is true for a response object, to handle the output 
going back to the web client. I've written them myself more than once, as have 
others here.

After doing some library and framework research (linked later) it looks like 
there is a reasonably  common subset of request/response functionality across 
all the userland implementations. That functionality also appears useful to 
non-framework users.

I wrote up a userland implementation for that limited subset of functionality, 
and John Boehr then used that as a reference point for the C version. It is PHP 
7.x only, and you can see the result at:

  <https://gitlab.com/pmjones/phprequest>

(The userland reference implementation is at 
<https://gitlab.com/pmjones/phprequest/tree/master/refimpl>, and the research 
subjects are in 
<https://gitlab.com/pmjones/phprequest/tree/master/refimpl/notes>.)

The extension provides server-side request and response objects for PHP. They 
are *not* HTTP message objects proper. They are more like wrappers for existing 
global PHP variables and functions, with some limited additional convenience 
functionality. There are only two classes:

- StdRequest, essentially a read-only struct composed of PHP superglobals and 
some other commonly-used values

- StdResponse, essentially a wrapper around (and buffer for) response-related 
PHP functions, with some additional convenience methods, and self-sending 
capability

I thought this might best be offered as a PECL extension first, leading (I 
would hope) to becoming a part of the PHP distribution later if it proves out.  
However, PECL has not responded in the past few days (perhaps I have not waited 
long enough).

In the mean time, I am bringing it up here to either (1) get PECL's attention, 
or (2) begin the RFC process if there's enough interest per 
<https://wiki.php.net/rfc/howto>.

I'm happy to answer any questions, and undergo any criticism, that you may have 
regarding this. Thanks for your time and attention.


-- 

Paul M. Jones
http://paul-m-jones.com


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to