Skip to content

Commit

Permalink
Bring code into line with stylistic parts of Doctrine Coding Standard
Browse files Browse the repository at this point in the history
Excluding behavioral changes for now
  • Loading branch information
kevinsmith committed Mar 14, 2020
1 parent d5a6cee commit 023d283
Show file tree
Hide file tree
Showing 12 changed files with 110 additions and 132 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
/vendor
/.idea
/.php_cs.cache
/.phpcs-cache
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ before_script:
- composer install
script:
- php vendor/bin/php-cs-fixer fix --verbose --dry-run --using-cache=no
- php vendor/bin/phpcs --no-cache --no-colors
- php vendor/bin/phpunit --coverage-clover=coverage.clover
- php vendor/bin/phpstan analyse --no-interaction
- php vendor/bin/psalm
Expand Down
6 changes: 5 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@
"psr/http-server-middleware": "^1.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"friendsofphp/php-cs-fixer": "^2.16",
"laminas/laminas-diactoros": "~2.2",
"phpstan/phpstan": "^0.12.14",
"phpunit/phpunit": "~7.0",
"roave/security-advisories": "dev-master",
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^3.9"
},
"autoload": {
Expand All @@ -48,12 +50,14 @@
"scripts": {
"test": [
"php-cs-fixer fix --verbose --dry-run",
"phpcs",
"phpstan analyse",
"psalm",
"phpunit"
],
"fix": [
"php-cs-fixer fix --verbose"
"php-cs-fixer fix --verbose",
"phpcbf"
]
}
}
23 changes: 23 additions & 0 deletions phpcs.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0"?>
<ruleset>
<arg name="basepath" value="."/>
<arg name="extensions" value="php"/>
<arg name="parallel" value="80"/>
<arg name="cache" value=".phpcs-cache"/>
<arg name="colors"/>

<!-- Ignore warnings, show progress of the run and show sniff names -->
<arg value="nps"/>

<!-- Directories to be checked -->
<file>src</file>
<file>tests</file>

<rule ref="Doctrine">
<exclude name="SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing"/>
<exclude name="SlevomatCodingStandard.TypeHints.NullableTypeForNullDefaultValue.NullabilitySymbolRequired"/>
<exclude name="SlevomatCodingStandard.Functions.StaticClosure.ClosureNotStatic"/>
<exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint"/>
<exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingParameterTypeHint"/>
</rule>
</ruleset>
18 changes: 4 additions & 14 deletions src/Relay.php
Original file line number Diff line number Diff line change
@@ -1,24 +1,13 @@
<?php
/**
*
* This file is part of Relay for PHP.
*
* @license http://opensource.org/licenses/MIT MIT
*
* @copyright 2015-2018, Paul M. Jones
*
*/

namespace Relay;

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use function reset;

/**
*
* A reusable PSR-15 request handler.
*
* @package relay/relay
*
*/
class Relay extends RequestHandler
{
Expand All @@ -29,6 +18,7 @@ public function handle(ServerRequestInterface $request) : ResponseInterface
{
reset($this->queue);
$runner = new Runner($this->queue, $this->resolver);

return $runner->handle($request);
}
}
44 changes: 4 additions & 40 deletions src/RelayBuilder.php
Original file line number Diff line number Diff line change
@@ -1,58 +1,22 @@
<?php
/**
*
* This file is part of Relay for PHP.
*
* @license http://opensource.org/licenses/MIT MIT
*
* @copyright 2015, Paul M. Jones
*
*/
namespace Relay;

use ArrayObject;
use Traversable;
namespace Relay;

/**
*
* A builder to create Relay objects.
*
* @package Relay.Relay
*
*/
class RelayBuilder
{
/**
*
* A callable to convert queue entries to callables in the Runner.
*
* @var callable
*
*/
/** @var callable */
protected $resolver;

/**
*
* Constructor.
*
* @param callable $resolver A callable to convert a queue entry to
* a callable|MiddlewareInterface in the Runner.
*
* @param callable $resolver Converts a given queue entry to a callable or MiddlewareInterface instance.
*/
public function __construct(callable $resolver = null)
{
$this->resolver = $resolver;
}

/**
*
* Creates a new Relay with the specified queue for its Runner objects.
*
* @param array|ArrayObject|Traversable $queue The
* queue specification.
*
* @return Relay
*
* @param iterable<mixed> $queue A queue of middleware entries.
*/
public function newInstance($queue) : Relay
{
Expand Down
53 changes: 15 additions & 38 deletions src/RequestHandler.php
Original file line number Diff line number Diff line change
@@ -1,62 +1,45 @@
<?php
/**
*
* This file is part of Relay for PHP.
*
* @license http://opensource.org/licenses/MIT MIT
*
* @copyright 2015-2018, Paul M. Jones
*
*/

namespace Relay;

use InvalidArgumentException;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Traversable;
use TypeError;
use function count;
use function is_array;
use function is_iterable;
use function iterator_to_array;

/**
*
* An abstract PSR-15 request handler.
*
* @package relay/relay
*
*/
abstract class RequestHandler implements RequestHandlerInterface
{
/**
* @var array
*/
/** @var mixed[] */
protected $queue;
/**
* @var callable
*/
/** @var callable */
protected $resolver;

/**
*
* Constructor.
*
* @param array|Traversable $queue A queue of middleware entries.
*
* @param callable $resolver Converts queue entries to middleware
* instances.
*
* @param iterable<mixed> $queue A queue of middleware entries.
* @param callable $resolver Converts a given queue entry to a callable or MiddlewareInterface instance.
*/
public function __construct($queue, callable $resolver = null)
{
if (! is_iterable($queue)) {
throw new TypeError('\$queue must be array or Traversable.');
}

if (count($queue) === 0) {
if (! is_array($queue)) {
$queue = iterator_to_array($queue);
}

if (empty($queue)) {
throw new InvalidArgumentException('$queue cannot be empty');
}

$this->queue = is_array($queue) ? $queue : iterator_to_array($queue);
$this->queue = $queue;

if ($resolver === null) {
$resolver = function ($entry) {
Expand All @@ -68,13 +51,7 @@ public function __construct($queue, callable $resolver = null)
}

/**
*
* Handles the current entry in the middleware queue and advances.
*
* @param ServerRequestInterface $request The request.
*
* @return ResponseInterface
*
*/
abstract public function handle(ServerRequestInterface $request) : ResponseInterface;
}
31 changes: 13 additions & 18 deletions src/Runner.php
Original file line number Diff line number Diff line change
@@ -1,28 +1,20 @@
<?php
/**
*
* This file is part of Relay for PHP.
*
* @license http://opensource.org/licenses/MIT MIT
*
* @copyright 2015-2018, Paul M. Jones
*
*/

namespace Relay;

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use RuntimeException;
use function call_user_func;
use function current;
use function is_callable;
use function next;
use function sprintf;

/**
*
* A PSR-15 request handler.
*
* @package relay/relay
*
*/
class Runner extends RequestHandler
{
Expand All @@ -31,7 +23,7 @@ class Runner extends RequestHandler
*/
public function handle(ServerRequestInterface $request) : ResponseInterface
{
$entry = current($this->queue);
$entry = current($this->queue);
$middleware = call_user_func($this->resolver, $entry);
next($this->queue);

Expand All @@ -42,14 +34,17 @@ public function handle(ServerRequestInterface $request) : ResponseInterface
if ($middleware instanceof RequestHandlerInterface) {
return $middleware->handle($request);
}

if (is_callable($middleware)) {
return $middleware($request, $this);
}

throw new RuntimeException(
"Invalid middleware queue entry: {$middleware}. Middleware must either be callable or implement " .
MiddlewareInterface::class . '.'
sprintf(
'Invalid middleware queue entry: %s. Middleware must either be callable or implement %s.',
$middleware,
MiddlewareInterface::class
)
);
}

Expand Down
10 changes: 7 additions & 3 deletions tests/FakeMiddleware.php
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
<?php

namespace Relay;

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function sprintf;

class FakeMiddleware implements MiddlewareInterface
{
/** @var int */
public static $count = 0;

public function process(
ServerRequestInterface $request,
RequestHandlerInterface $handler
) : ResponseInterface {
$n = ++ static::$count;
$n = ++ static::$count;
$response = $handler->handle($request);
$response->getBody()->write("<{$n}");
$response->getBody()->write(sprintf('<%s', $n));

return $response;
}
}
9 changes: 9 additions & 0 deletions tests/FakeResolver.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
<?php

namespace Relay;

use Psr\Http\Server\MiddlewareInterface;
use function is_string;

class FakeResolver
{
/**
* @param string|callable|MiddlewareInterface $entry
*
* @return callable|MiddlewareInterface
*/
public function __invoke($entry)
{
if (is_string($entry)) {
Expand Down
Loading

0 comments on commit 023d283

Please sign in to comment.