Skip to content

Commit

Permalink
Add more scalar type checks
Browse files Browse the repository at this point in the history
  • Loading branch information
cundd committed Apr 18, 2019
1 parent 62977a6 commit 23595da
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 55 deletions.
12 changes: 6 additions & 6 deletions Classes/Router/ParameterType.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ abstract class ParameterType
* @param string $pattern
* @return string[]
*/
public static function extractParameterTypesFromPattern($pattern)
public static function extractParameterTypesFromPattern(string $pattern): array
{
return array_filter(array_map([__CLASS__, 'createParameter'], self::splitPattern($pattern)));
}
Expand All @@ -23,7 +23,7 @@ public static function extractParameterTypesFromPattern($pattern)
* @param string $input
* @return string
*/
private static function createParameter($input)
private static function createParameter(string $input)
{
$startsWithBracket = substr($input, 0, 1) === '{';
$endsWithBracket = substr($input, -1) === '}';
Expand All @@ -47,8 +47,8 @@ private static function createParameter($input)
case 'string':
return ParameterTypeInterface::SLUG;

case 'raw':
return ParameterTypeInterface::RAW;
case 'raw':
return ParameterTypeInterface::RAW;

case 'float':
case 'double':
Expand All @@ -68,10 +68,10 @@ private static function createParameter($input)
* @param $pattern
* @return array
*/
private static function splitPattern($pattern)
private static function splitPattern(string $pattern)
{
return array_reduce(
explode('/', (string)$pattern),
explode('/', $pattern),
function ($carry, $item) {
return array_merge($carry, explode('.', $item));
},
Expand Down
55 changes: 6 additions & 49 deletions Classes/Router/Route.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,84 +43,41 @@ class Route implements RouteInterface, RouteFactoryInterface
* @param string $method
* @param callable $callback
*/
public function __construct($pattern, $method, callable $callback)
public function __construct($pattern, string $method, callable $callback)
{
$this->assertString($pattern, 'pattern');
$this->assertString($method, 'method');
$this->assertStringOrObject($pattern, 'pattern');

$this->pattern = $this->normalizePattern($pattern);
$this->method = strtoupper($method);
$this->callback = $callback;
$this->parameters = ParameterType::extractParameterTypesFromPattern($this->pattern);
}

/**
* Creates a new Route with the given pattern and callback for the method GET
*
* @param string $pattern
* @param callable $callback
* @return static
*/
public static function get($pattern, callable $callback): \Cundd\Rest\Router\Route
public static function get($pattern, callable $callback): Route
{
return new static($pattern, 'GET', $callback);
}

/**
* Creates a new Route with the given pattern and callback for the method POST
*
* @param string $pattern
* @param callable $callback
* @return static
*/
public static function post($pattern, callable $callback): Route
{
return new static($pattern, 'POST', $callback);
}

/**
* Creates a new Route with the given pattern and callback for the method PUT
*
* @param string $pattern
* @param callable $callback
* @return static
*/
public static function put($pattern, callable $callback): Route
{
return new static($pattern, 'PUT', $callback);
}

/**
* Creates a new Route with the given pattern and callback for the method DELETE
*
* @param string $pattern
* @param callable $callback
* @return static
*/
public static function delete($pattern, callable $callback): Route
{
return new static($pattern, 'DELETE', $callback);
}

/**
* Creates a new Route with the given pattern and callback for the method OPTIONS
*
* @param string $pattern
* @param callable $callback
* @return static
*/
public static function options($pattern, callable $callback): Route
{
return new static($pattern, 'OPTIONS', $callback);
}

/**
* Creates a new Route with the given pattern and callback for the method PATCH
*
* @param string $pattern
* @param callable $callback
* @return static
*/
public static function patch($pattern, callable $callback): Route
{
return new static($pattern, 'PATCH', $callback);
Expand Down Expand Up @@ -228,7 +185,7 @@ public function getPriority()
* @param mixed $input
* @param string $argumentName
*/
private function assertString($input, $argumentName)
private function assertStringOrObject($input, $argumentName)
{
if (!is_string($input) && !(is_object($input) && method_exists($input, '__toString'))) {
throw InvalidArgumentException::buildException($input, 'string', $argumentName);
Expand All @@ -238,10 +195,10 @@ private function assertString($input, $argumentName)
/**
* Normalize the path pattern
*
* @param string $inputPattern
* @param string|ResourceType $inputPattern
* @return string
*/
private function normalizePattern($inputPattern)
private function normalizePattern($inputPattern): string
{
$pattern = '/' . ltrim((string)$inputPattern, '/');
$patternParts = explode('/', $pattern);
Expand Down

0 comments on commit 23595da

Please sign in to comment.