Hi Stephen,

Good stuff. You have stepped through my & John's earlier thought-process in 
much the same way that led to the current naming.


> On Mar 13, 2020, at 09:23, Stephen Reay <php-li...@koalephant.com> wrote:
> 
>> On 13 Mar 2020, at 20:39, Paul M. Jones <pmjo...@pmjones.io> wrote:
>> 
>> Do you have alternative suggestions or preferences on the names? Or, do you 
>> feel that "Request" and "Response" and "ResponseSender" (without any 
>> prefixes at all) would be sufficiently obvious?
> 
> Hi Paul,
> 
> TLDR: if you aren’t concerned about the concept of php-initiated outgoing 
> HTTP requests, I think `HTTP{Request,Response,Buffer}` is quite clear in 
> terms of naming. If you wanted to be more explicit about their purpose 
> (and/or prevent possible confusion with either user land or potential future 
> extensions handling outgoing requests), `IncomingHTTPRequest` and 
> `OutgoingHTTPResponse` are very explicit, if a bit verbose.
> 
> I think I did see that message, but I must admit I haven’t followed all the 
> responses in the discussion.
> 
> Personally I think `HTTP` makes a pretty obvious prefix (I’m not gonna get 
> into a capitalisation debate), because these things are explicitly related to 
> HTTP request and response messages.

I follow your reasoning. The main problem I see with "HTTP" (I won't argue 
capitalization either) is that I can guarantee you there will be a very vocal 
subset of users who will complain loudly and continuously that the objects do 
not model HTTP messages. I would prefer to pre-empt that, especially since it 
is true. ;-)

One other alternative John & I contemplated was 
`Web{Request,Response,ResponseSender}` -- do you think that might be a 
reasonable alternative to HTTP, one that is "adjacent" but not overly-specific? 
That would net us:

- WebRequest
- WebResponse
- WebResponseSender

I didn't like the look of it previously, and I don't think I like the look of 
it now, but ... (/me shrugs).


> However, that also may be confusing if people expect it to be a construct for 
> making outgoing requests. 

Yes, that's another tricky bit in the naming -- making a distinction between 
the objects as representative of client operations (send request, receive 
response) and server operations (receive request, send response). Thus the 
current `Server` prefix (however unsatisfactory it may be) to indicate their 
operational context.

Your `Incoming` and `Outgoing` prefixes, minus the HTTP, would net us:

- IncomingRequest
- OutgoingResponse
- OutgoingResponseSender

I will need to ponder on those.


> The user land implementation I’ve been using ’solves’ this by using a `HTTP` 
> namespace, and then provides `Request` and `Response` (for an outgoing - i.e. 
> curl - HTTP Request, and the corresponding HTTP Response) objects and then 
> `CurrentRequest` and `CurrentResponse` for what your RFC proposes (i.e. the 
> active request made to php). 

Yes, userland does operate that way. However, I think adding an HTTP namespace 
to PHP itself is something to be avoided, so emulating userland here is not an 
option.


> As with anything any of us has written, I’m not 100% sold on 
> ‘Current{Request,Response}` even after writing it, but I think it’s at least 
> a little more specific about what they do, when the namespace is taken into 
> account.

`Current{...}` is not something we had previously considered; that would net 
us, in the global namespace:

- CurrentRequest
- CurrentResponse
- CurrentResponseSender

I will need to ponder on those as well.

Any further thoughts or opinions on this, Stephen? Or from anyone else?


-- 
Paul M. Jones
pmjo...@pmjones.io
http://paul-m-jones.com

Modernizing Legacy Applications in PHP
https://leanpub.com/mlaphp

Solving the N+1 Problem in PHP
https://leanpub.com/sn1php

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

Reply via email to