for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php declare(strict_types = 1);
namespace Venta\Routing;
use Venta\Contracts\Routing\Route as RouteContract;
use Venta\Contracts\Routing\RoutePathProcessor as RoutePathProcessorContract;
/**
* Class RoutePathProcessor
*
* @package Venta\Routing
*/
class RoutePathProcessor implements RoutePathProcessorContract
{
* @var string[]
private $patterns = ['/{\?(.+?)}/' => '[{$1}]'];
* @inheritDoc
public function addPattern(string $placeholder, string $regex): RoutePathProcessorContract
$this->patterns["/{{$placeholder}}/"] = "{{$placeholder}:{$regex}}";
sprintf
$placeholder
It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.
// Instead of $x = "foo $bar $baz"; // Better use either $x = "foo " . $bar . " " . $baz; $x = sprintf("foo %s %s", $bar, $baz);
$regex
return $this;
}
public function process(RouteContract $route): RouteContract
return $route->withPath(
preg_replace(array_keys($this->patterns), array_values($this->patterns), $route->getPath())
);
It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.