Skip to content

Commit

Permalink
prepare for a new version
Browse files Browse the repository at this point in the history
  • Loading branch information
oscarotero committed Nov 29, 2019
1 parent 5f47b9f commit 1dabb2f
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 171 deletions.
15 changes: 8 additions & 7 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
* text=auto eol=lf

/tests export-ignore
.editorconfig export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.travis.yml export-ignore
phpunit.xml export-ignore
phpcs.xml export-ignore
/tests export-ignore
.editorconfig export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.php_cs export-ignore
.travis.yml export-ignore
phpcs.xml.dist export-ignore
phpunit.xml.dist export-ignore
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
vendor
composer.lock
.php_cs.cache
coverage
.phpunit.result.cache
*.cache
135 changes: 8 additions & 127 deletions .php_cs
Original file line number Diff line number Diff line change
@@ -1,129 +1,10 @@
<?php

$finder = PhpCsFixer\Finder::create()
->files()
->name('*.php')
->in(__DIR__ . '/src')
->in(__DIR__ . '/tests')
;

return PhpCsFixer\Config::create()
->setRules(array(
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => ['align_double_arrow' => false, 'align_equals' => false],
'blank_line_after_namespace' => true,
'blank_line_after_opening_tag' => false,
'blank_line_before_return' => false,
'braces' => ['allow_single_line_closure' => false],
'cast_spaces' => true,
'class_definition' => ['singleLine' => false, 'singleItemSingleLine' => true, 'multiLineExtendsEachSingleLine' => true],
'class_keyword_remove' => false,
'combine_consecutive_unsets' => true,
'concat_space' => false,
'declare_equal_normalize' => ['space' => 'single'],
'declare_strict_types' => false,
'elseif' => true,
'encoding' => true,
'full_opening_tag' => true,
'function_declaration' => true,
'function_typehint_space' => true,
'general_phpdoc_annotation_remove' => ['expectedExceptionMessageRegExp', 'expectedException', 'expectedExceptionMessage'],
'hash_to_slash_comment' => true,
'header_comment' => false,
'heredoc_to_nowdoc' => true,
'include' => true,
'indentation_type' => true,
'line_ending' => true,
'linebreak_after_opening_tag' => true,
'lowercase_cast' => true,
'lowercase_constants' => true,
'lowercase_keywords' => true,
'mb_str_functions' => false,
'method_argument_space' => true,
'method_separation' => true,
'native_function_casing' => true,
'native_function_invocation' => false,
'new_with_braces' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => false,
'no_blank_lines_before_namespace' => false,
'no_closing_tag' => true,
'no_empty_comment' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_consecutive_blank_lines' => ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block'],
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_multiline_whitespace_before_semicolons' => true,
'no_short_bool_cast' => true,
'no_short_echo_tag' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_after_function_name' => true,
'no_spaces_around_offset' => true,
'no_spaces_inside_parenthesis' => true,
'no_trailing_comma_in_list_call' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unneeded_control_parentheses' => true,
'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'normalize_index_brace' => true,
'not_operator_with_space' => false,
'not_operator_with_successor_space' => false,
'object_operator_without_whitespace' => true,
'ordered_class_elements' => false,
'ordered_imports' => true,
'php_unit_fqcn_annotation' => true,
'php_unit_strict' => false,
'phpdoc_add_missing_param_annotation' => true,
'phpdoc_align' => true,
'phpdoc_inline_tag' => true,
'phpdoc_no_access' => true,
'phpdoc_no_alias_tag' => ['property-read' => 'property', 'property-write' => 'property', 'type' => 'var'],
'phpdoc_no_empty_return' => true,
'phpdoc_no_package' => true,
'phpdoc_no_useless_inheritdoc' => true,
'phpdoc_order' => true,
'phpdoc_return_self_reference' => true,
'phpdoc_scalar' => true,
'phpdoc_separation' => false,
'phpdoc_single_line_var_spacing' => true,
'phpdoc_summary' => false,
'phpdoc_to_comment' => true,
'phpdoc_trim' => true,
'phpdoc_types' => true,
'phpdoc_var_without_name' => true,
'pow_to_exponentiation' => false,
'pre_increment' => true,
'protected_to_private' => true,
'return_type_declaration' => true,
'semicolon_after_instruction' => true,
'short_scalar_cast' => true,
'single_blank_line_at_eof' => true,
'single_blank_line_before_namespace' => false,
'single_class_element_per_statement' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_quote' => true,
'space_after_semicolon' => true,
'standardize_not_equals' => true,
'strict_param' => false,
'switch_case_semicolon_to_colon' => true,
'switch_case_space' => true,
'ternary_operator_spaces' => true,
'ternary_to_null_coalescing' => false,
'trailing_comma_in_multiline_array' => true,
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'visibility_required' => true,
'whitespace_after_comma_in_array' => true,
))
->setFinder($finder)
;
return My\PhpCsFixerConfig::create()
->setFinder(
PhpCsFixer\Finder::create()
->files()
->name('*.php')
->in(__DIR__.'/src')
->in(__DIR__.'/tests')
);
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ language: php
sudo: false

php:
- 7.0
- 7.1
- 7.2
- 7.3

before_script:
- composer self-update
Expand Down
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,14 @@

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [2.0.0] - 2019-11-29
### Removed
- Support for PHP 7.0 and 7.1
- The `responseFactory()` option. Use the `__construct` argument.

## [1.2.1] - 2019-04-01
### Fixed
- Added support for encoded path [#11]
Expand Down Expand Up @@ -87,6 +92,7 @@ First version

[#11]: https://github.com/middlewares/fast-route/issues/11

[2.0.0]: https://github.com/middlewares/fast-route/compare/v1.2.1...v2.0.0
[1.2.1]: https://github.com/middlewares/fast-route/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/middlewares/fast-route/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/middlewares/fast-route/compare/v1.0.0...v1.1.0
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2018
Copyright (c) 2019

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
31 changes: 14 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
[![Build Status][ico-travis]][link-travis]
[![Quality Score][ico-scrutinizer]][link-scrutinizer]
[![Total Downloads][ico-downloads]][link-downloads]
[![SensioLabs Insight][ico-sensiolabs]][link-sensiolabs]

Middleware to use [FastRoute](https://github.com/nikic/FastRoute) for handler discovery.

## Requirements

* PHP >= 7.0
* PHP >= 7.2
* A [PSR-7 http library](https://github.com/middlewares/awesome-psr15-middlewares#psr-7-implementations)
* A [PSR-15 middleware dispatcher](https://github.com/middlewares/awesome-psr15-middlewares#dispatcher)

Expand Down Expand Up @@ -57,23 +56,25 @@ $response = $dispatcher->dispatch(new ServerRequest('/hello/world'));

**FastRoute** allows anything to be defined as the router handler (a closure, callback, action object, controller class, etc). The middleware will store this handler in a request attribute.

## API
## Usage

### `__construct`
Create the middleware with a `FastRoute\Dispatcher` instance:

Type | Required | Description
--------------|----------|------------
`FastRoute\Dispatcher` | Yes | The dispatcher instance to use.
`Psr\Http\Message\ResponseFactoryInterface` | No | A PSR-17 factory to create the error responses (`404` or `405`). If it's not defined, use [Middleware\Utils\Factory](https://github.com/middlewares/utils#factory) to detect it automatically.
```php
$route = new Middlewares\FastRoute($dispatcher);
```

Optionally, you can provide a `Psr\Http\Message\ResponseFactoryInterface` as the second argument, that will be used to create the error responses (`404` or `405`). If it's not defined, [Middleware\Utils\Factory](https://github.com/middlewares/utils#factory) will be used to detect it automatically.

### `attribute`
```php
$responseFactory = new MyOwnResponseFactory();

Changes the attribute name used to store the handler in the server request. The default name is `request-handler`.
$route = new Middlewares\FastRoute($dispatcher, $responseFactory);
```

Type | Required | Description
--------------|----------|------------
`string` | Yes | The new attribute name
### attribute

Changes the attribute name used to store the handler in the server request. The default name is `request-handler`.

```php
$dispatcher = new Dispatcher([
Expand All @@ -83,8 +84,6 @@ $dispatcher = new Dispatcher([
//Execute the route handler
(new Middlewares\RequestHandler())->attribute('route')
]);

$response = $dispatcher->dispatch(new ServerRequest('/hello/world'));
```
---

Expand All @@ -97,10 +96,8 @@ The MIT License (MIT). Please see [LICENSE](LICENSE) for more information.
[ico-travis]: https://img.shields.io/travis/middlewares/fast-route/master.svg?style=flat-square
[ico-scrutinizer]: https://img.shields.io/scrutinizer/g/middlewares/fast-route.svg?style=flat-square
[ico-downloads]: https://img.shields.io/packagist/dt/middlewares/fast-route.svg?style=flat-square
[ico-sensiolabs]: https://img.shields.io/sensiolabs/i/bb44398f-43ee-4a09-a60e-d5c9735fa0be.svg?style=flat-square

[link-packagist]: https://packagist.org/packages/middlewares/fast-route
[link-travis]: https://travis-ci.org/middlewares/fast-route
[link-scrutinizer]: https://scrutinizer-ci.com/g/middlewares/fast-route
[link-downloads]: https://packagist.org/packages/middlewares/fast-route
[link-sensiolabs]: https://insight.sensiolabs.com/projects/bb44398f-43ee-4a09-a60e-d5c9735fa0be
15 changes: 7 additions & 8 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@
"issues": "https://github.com/middlewares/fast-route/issues"
},
"require": {
"php": "^7.0",
"php": "^7.2",
"nikic/fast-route": "^1.0",
"middlewares/utils": "^2.1",
"middlewares/utils": "^3.0",
"psr/http-server-middleware": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0|^7.0",
"zendframework/zend-diactoros": "^1.3",
"phpunit/phpunit": "^8.1",
"zendframework/zend-diactoros": "^2.2",
"friendsofphp/php-cs-fixer": "^2.0",
"squizlabs/php_codesniffer": "^3.0",
"phpstan/phpstan": "^0.9.2|^0.10.3"
"oscarotero/php-cs-fixer-config": "^1.0"
},
"autoload": {
"psr-4": {
Expand All @@ -45,8 +45,7 @@
"phpunit --coverage-text",
"phpcs"
],
"cs-fix": "php-cs-fixer fix .",
"coverage": "phpunit --coverage-html=coverage",
"analyse": "phpstan analyse --no-progress --level 7 src"
"cs-fix": "php-cs-fixer fix",
"coverage": "phpunit --coverage-html=coverage"
}
}
12 changes: 7 additions & 5 deletions src/FastRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

use FastRoute\Dispatcher;
use Middlewares\Utils\Factory;
use Middlewares\Utils\Traits\HasResponseFactory;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
Expand All @@ -14,8 +13,6 @@

class FastRoute implements MiddlewareInterface
{
use HasResponseFactory;

/**
* @var Dispatcher FastRoute dispatcher
*/
Expand All @@ -26,6 +23,11 @@ class FastRoute implements MiddlewareInterface
*/
private $attribute = 'request-handler';

/**
* @var ResponseFactoryInterface
*/
private $responseFactory;

/**
* Set the Dispatcher instance and optionally the response factory to return the error responses.
*/
Expand Down Expand Up @@ -53,11 +55,11 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
$route = $this->router->dispatch($request->getMethod(), rawurldecode($request->getUri()->getPath()));

if ($route[0] === Dispatcher::NOT_FOUND) {
return $this->createResponse(404);
return $this->responseFactory->createResponse(404);
}

if ($route[0] === Dispatcher::METHOD_NOT_ALLOWED) {
return $this->createResponse(405)->withHeader('Allow', implode(', ', $route[1]));
return $this->responseFactory->createResponse(405)->withHeader('Allow', implode(', ', $route[1]));
}

foreach ($route[2] as $name => $value) {
Expand Down
2 changes: 1 addition & 1 deletion tests/FastRouteTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

namespace Middlewares\Tests;

use function FastRoute\simpleDispatcher;
use Middlewares\FastRoute;
use Middlewares\Utils\Dispatcher;
use Middlewares\Utils\Factory;
use PHPUnit\Framework\TestCase;
use function FastRoute\simpleDispatcher;

class FastRouteTest extends TestCase
{
Expand Down

0 comments on commit 1dabb2f

Please sign in to comment.