On Fri, Sep 25, 2026, at 5:43 AM, Gina P. Banyard wrote:
> On Friday, 25 September 2026 at 07:59, Sjoerd Langkemper 
> <[email protected]> wrote:
>> On Wed, Sep 23, 2026, at 21:01, Gina P. Banyard wrote:
>>> This class could lay the foundation on which to build a new nice OO API
>>
>> Nice. I am in favor of improving the API, instead of slapping more flags 
>> onto the existing one.

I also like the idea of an OOP Regex API.  Though I would ask that we just call 
it Regex, not CompiledRegex.  The "Compiled" adds no relevant information that 
a developer cares about, but doubles the length of text they need to read and 
begs the question of how to make an "uncompiled regex" (which is not a thing).

>>> returning a bool type
>> 
>> Would it make more sense to return a Match object, with captured groups?
>
> How would this Match object work? What is it's API? And if you don't 
> care about captured groups why would you need to instantiate an (or 
> multiple) object when a boolean value would do just fine.
> That's why I said I don't want to spend time on designing an API as 
> this frankly needs multiple methods and is going to be complicated.
> There are also new PCRE2 features not exposed to userland where it may 
> make sense to do so in a greenfield API. 

That feels like two separate methods then.  match(): bool and matchCapture(): 
MatchResult, or something like that.

>> The proposed API would result in calls like this: 
>> new CompiledRegex(".*", false, false, false, true, true, true, false, true)
>> where it is hard to determine what all the true/false parameters mean. Would 
>> it be better to pass enums instead? Or is this solved by editor hints 
>> nowadays
>
> Arguably we have named parameters to just toggle the options that are 
> different from the default, so I wouldn't be writing a call to it like 
> this nowadays anyway.
> But Nora did suggest an array of `enum RegexOptions` on the PR, and my 
> reply was that if PHP had a way to pass an Enum set this would be the 
> best approach as you'd only have one parameter.
> In any case I don't have strong feelings about this part (or maybe I 
> should spend some time and figure out a way to make enum sets a reality 
> before) 

If we can make sets a native type with good operator usage (I have designs for 
this), then enum sets would fall out naturally.

Baring that, I assumed this would always be called with sparse named arguments, 
which I am fine with.  (As someone who rarely uses regexes, admittedly.)

--Larry Garfield

Reply via email to