Viewing file: RouteUri.php (1.29 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\Routing;
class RouteUri { /** * The route URI. * * @var string */ public $uri;
/** * The fields that should be used when resolving bindings. * * @var array */ public $bindingFields = [];
/** * Create a new route URI instance. * * @param string $uri * @param array $bindingFields * @return void */ public function __construct(string $uri, array $bindingFields = []) { $this->uri = $uri; $this->bindingFields = $bindingFields; }
/** * Parse the given URI. * * @param string $uri * @return static */ public static function parse($uri) { preg_match_all('/\{([\w\:]+?)\??\}/', $uri, $matches);
$bindingFields = [];
foreach ($matches[0] as $match) { if (! str_contains($match, ':')) { continue; }
$segments = explode(':', trim($match, '{}?'));
$bindingFields[$segments[0]] = $segments[1];
$uri = str_contains($match, '?') ? str_replace($match, '{'.$segments[0].'?}', $uri) : str_replace($match, '{'.$segments[0].'}', $uri); }
return new static($uri, $bindingFields); } }
|