Re: Pre-RFC: adding a Regex\CompiledRegex class for compiling regular expressions
| From: | Juris Evertovskis | Date: | Fri, 25 Sep 2026 17:03:32 +0000 |
| Subject: | Re: Pre-RFC: adding a Regex\CompiledRegex class for compiling regular expressions | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-132642@lists.php.net to get a copy of this message | ||
On 2026-09-23 22:01, Gina P. Banyard wrote:
I've currently landed on the following concept design:
namespace Regex {
class CompilationError extends Exception {}
/**
* @strict-properties
* @not-serializable
*/
final class CompiledRegex {
public function __construct(
string $pattern,
bool $caseSensitive = true,
bool $greedy = true,
bool $anchor = false,
bool $multiLine = false,
bool $dotMatchesNewLine = false,
bool $ignoreWhitespace = false,
bool $captureOnlyNamedGroups = false,
bool $allowDuplicateSubPatternNames = false,
) {}
}
}
Hi!
Great idea!
I've got some stupid questions though:
- Why final? Let me add methods while there's nothing in the core.
- Why @not-serializable? Serialization would seem as straightforward as for a plain DTO.
- Why not readonly public for all params? Inspecting the setup would be useful to build onto this in userland.
Regarding points brought up by otters
- +1 for the Regex name. And in that case Pcre\Regex might be nicer to avoid duplication and mixups.
- I would also need fromString or similar, but no problem to add it myself for now, as long as it's not fainal.
- I don't buy the objections about the number of the args. These days there's no problem to write new Regex($pattern, multiline: true). Fluent builders, enums, constants — those are just workarounds in the absence of such syntax.
BR,
Juris