From dc03419384af6def0b3adb3b976b1f5a3a46cca2 Mon Sep 17 00:00:00 2001 From: Sam Light Date: Wed, 10 Jun 2026 19:00:32 +0100 Subject: Make route from route string --- src/PathSegment.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/PathSegment.php b/src/PathSegment.php index 9337fa1..c2231da 100644 --- a/src/PathSegment.php +++ b/src/PathSegment.php @@ -6,6 +6,7 @@ namespace Lightscale\Router; use Lightscale\Router\Enums\HttpMethod; use Lightscale\Router\Enums\PathSegmentType; +use Lightscale\Router\Exceptions\MissingParameterException; class PathSegment { @@ -19,7 +20,7 @@ class PathSegment protected ?self $parent = null; - public function __construct( + final public function __construct( protected ?string $value = null, protected PathSegmentType $type = PathSegmentType::Raw, ) { @@ -28,6 +29,19 @@ class PathSegment } } + public static function makeFromRouteString(string $value): static + { + $type = PathSegmentType::Parameter; + $regex = $type->routeMatchRegex(); + if (preg_match($regex, $value, $matches) === 1) { + $value = $matches[1]; + } + else { + $type = PathSegmentType::Raw; + } + return new static($value, $type); + } + public function getContent(): string { return match ($this->type) { -- cgit v1.2.3