Re: Pre-RFC: adding a Regex\CompiledRegex class for compiling regular expressions

From: 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

« previous php.internals (#132642) next »