On Mon, Jul 21, 2025 at 10:47 AM Eric Norris <eric.t.nor...@gmail.com> wrote:
>
> On Mon, Jul 7, 2025 at 12:53 PM Eric Norris <eric.t.nor...@gmail.com> wrote:
> >
> > On Wed, Jul 2, 2025 at 11:48 AM Eric Norris <eric.t.nor...@gmail.com> wrote:
> > >
> > > > Based on the feedback so far (I do plan on waiting for more responses
> > > > to your email), and on my own preferences, I wonder if there is a
> > > > hybrid option I could propose. Perhaps the RFC could offer both a
> > > > \Curl\Handle (tentative name) to address position 1, and a
> > > > \Curl\BasicHttpHandle (also tentative name) that addresses position 2?
> > > > If people were amenable, I'd even make the BasicHttpHandle a separate
> > > > vote.
> > > >
> > > > I agree that 3 is both more bikesheddable and also possibly ideal, but
> > > > I feel my above suggestion maybe strikes the right balance between the
> > > > "status quo is fine, I don't want to see random HTTP-related methods
> > > > on my low(est)-level curl object" and the "I'd like to do basic HTTP
> > > > stuff with curl, without a library" crowds.
> > > >
> > > > Barring that, my preference would be 2, but I'd accept 1 just to have
> > > > it pass - like I mentioned elsewhere, I think there is value in
> > > > introducing namespaces and object-oriented APIs for "modernization"
> > > > and language consistency reasons.
> > >
> > > Having thought about this some more, while I'm still feeling somewhat
> > > positive about my suggestion I'm just not sure it's the best way to
> > > proceed. I started to sketch what a BasicHttpHandle class would look
> > > like, and I'm stuck on how to get data about the response out of the
> > > class.
> > >
> > > Naively, we could have $response_status_code and $response_headers
> > > properties, and have the same fetch() and execute() methods I
> > > suggested elsewhere to get the response body. Alternatively, we could
> > > return a simple CurlHttpResponse object which contains all three
> > > properties in the fetch() and execute() implementations for the
> > > BasicHttpHandle class.
> > >
> > > Both of these are fine, but they would lock us out of being PSR7
> > > compatible. I think that people would probably desire PSR7
> > > compatibility, and I would feel uncomfortable with eliminating or
> > > tainting the possibility of achieving this. For example, if we had
> > > this BasicHttpHandle and then later introduced PSR7 response objects,
> > > we'd need to either break backwards compatibility for the class, or
> > > introduce a second class. We could also go straight to returning a
> > > PSR7 compatible response for the BasicHttpHandle class, but I think
> > > that likely deserves its own RFC.
> > >
> > > So in closing, if people felt generally okay with the limitation of
> > > not being PSR7 compatible, I'd probably still add some form of my
> > > BasicHttpHandle suggestion as a secondary vote. If people thought PSR7
> > > was necessary, I'd drop it, and leave a PSR7-in-core RFC for the
> > > future. In that case, I'd go with Larry's option 1 for the RFC; I've
> > > currently updated the RFC to match that option for now.
> >
> > Thanks Ben, Larry, and Paul for your responses to my suggestion for a
> > BasicHttpHandle class. After reflecting further, I have decided to
> > move this to the Future Scope section, as it feels weighty enough to
> > stand as its own RFC. I'd like to think about this a bit more, but I
> > will note that having a Request and Response interface in core would
> > greatly simplify the proposal for a simple curl-based HTTP client, so
> > I'd likely support any effort on that front.
> >
> > I've also updated the Curl\MultiHandle class proposal to account for
> > removing the CURLOPT_RETURNTRANSFER option.
> >
> > At this point I believe the RFC is in a semi-final state at this
> > point, barring any additional discussion. Thanks all for the feedback
> > so far!
>
> I'd like to bring this to a vote since discussion has died down, but I
> feel that I should implement the proposal before doing so. As always
> this is the hard part, and since I'm back from an extended break at
> work I will have less time to focus on this.
>
> I've mentioned this before, but if anyone would like to collaborate on
> the implementation, please reach out! Otherwise, I'll update this
> thread with a link to the implementation at some point in the future,
> give it a little more time for discussion, and bring the proposal to a
> vote.

Apologies, quick clarification: I do not intend to target PHP 8.5, and
will update the RFC to note this.

Reply via email to