- Add support for PHP 8.4
- Do not HTML entity encode in PlainTextErrorRenderer by @akrabat in #3319
- Only render tip to error log if plain text renderer is used by @akrabat in #3321
- Add template generics for PSR-11 implementations in PHPStan and Psalm by @limarkxx in #3322
- Update squizlabs/php_codesniffer requirement from ^3.9 to ^3.10 by @dependabot in #3324
- Update phpstan/phpstan requirement from ^1.10 to ^1.11 by @dependabot in #3325
- Update psr/http-factory requirement from ^1.0 to ^1.1 by @dependabot in #3326
With the introduction of template generics, if you type-hint Slim\App
instance variable using /** @var \Slim\App $app */
, then you will need to change it to either:
/** @var \Slim\App<null> $app */
if you are not using a DI container, or/** @var \Slim\App<\Psr\Container\ContainerInterface> $app */
if you are
You can also type-hint to the concrete instance of the container you are using too. For example, if you are using PHP-DI, then you can use: /** @var \Slim\App<DI\Container> $app */
.
- @limarkxx made their first contribution in #3322
Full Changelog: https://github.com/slimphp/Slim/compare/4.13.0...4.14.0
- 3277: Create HttpTooManyRequestsException.php thanks to @flavioheleno
- 3278: Remove HttpGoneException executable flag thanks to @flavioheleno
- 3285: Update guzzlehttp/psr7 requirement from ^2.5 to ^2.6 thanks to @dependabot[bot]
- 3290: Bump actions/checkout from 3 to 4 thanks to @dependabot[bot]
- 3291: Fix line length thanks to @l0gicgate
- 3296: PSR 7 http-message version requirement thanks to @rotexdegba
- 3297: Allow Diactoros 3 thanks to @derrabus
- 3299: Update tests and add PHP 8.3 to the CI matrix thanks to @akrabat
- 3301: Update nyholm/psr7-server requirement from ^1.0 to ^1.1 thanks to @dependabot[bot]
- 3302: Add support for psr/http-message ^2.0 thanks to @rotexdegba
- 3305: Update phpspec/prophecy-phpunit requirement from ^2.0 to ^2.1 thanks to @dependabot[bot]
- 3306: Update phpspec/prophecy requirement from ^1.17 to ^1.18 thanks to @dependabot[bot]
- 3308: Update squizlabs/php_codesniffer requirement from ^3.7 to ^3.8 thanks to @dependabot[bot]
- 3313: Bump ramsey/composer-install from 2 to 3 thanks to @dependabot[bot]
- 3314: Update phpspec/prophecy requirement from ^1.18 to ^1.19 thanks to @dependabot[bot]
- 3315: Update squizlabs/php_codesniffer requirement from ^3.8 to ^3.9 thanks to @dependabot[bot]
- 3220: Refactor thanks to @amirkhodabande
- 3237: Update phpstan/phpstan requirement from ^1.8 to ^1.9 thanks to @dependabot[bot]
- 3238: Update slim/http requirement from ^1.2 to ^1.3 thanks to @dependabot[bot]
- 3239: Update slim/psr7 requirement from ^1.5 to ^1.6 thanks to @dependabot[bot]
- 3240: Update phpspec/prophecy requirement from ^1.15 to ^1.16 thanks to @dependabot[bot]
- 3241: Update adriansuter/php-autoload-override requirement from ^1.3 to ^1.4 thanks to @dependabot[bot]
- 3245: New ability to override RouteGroupInterface in the Route class thanks to @githubjeka
- 3253: Fix HttpBadRequestException description thanks to @jsanahuja
- 3254: Update phpunit/phpunit requirement from ^9.5 to ^9.6 thanks to @dependabot[bot]
- 3255: Update phpstan/phpstan requirement from ^1.9 to ^1.10 thanks to @dependabot[bot]
- 3256: Update phpspec/prophecy requirement from ^1.16 to ^1.17 thanks to @dependabot[bot]
- 3264: Update psr/http-message requirement from ^1.0 to ^1.1 thanks to @dependabot[bot]
- 3265: Update nyholm/psr7 requirement from ^1.5 to ^1.7 thanks to @dependabot[bot]
- 3266: Update guzzlehttp/psr7 requirement from ^2.4 to ^2.5 thanks to @dependabot[bot]
- 3267: Update nyholm/psr7 requirement from ^1.7 to ^1.8 thanks to @dependabot[bot]
- 3269: Update httpsoft/http-server-request requirement from ^1.0 to ^1.1 thanks to @dependabot[bot]
- 3270: Update httpsoft/http-message requirement from ^1.0 to ^1.1 thanks to @dependabot[bot]
- 3271: prevent multiple entries of same methode in FastRouteDispatcher thanks to @papparazzo
- 3180: Declare types thanks to @nbayramberdiyev
- 3181: Update laminas/laminas-diactoros requirement from ^2.8 to ^2.9 thanks to @dependabot[bot]
- 3182: Update guzzlehttp/psr7 requirement from ^2.1 to ^2.2 thanks to @dependabot[bot]
- 3183: Update phpstan/phpstan requirement from ^1.4 to ^1.5 thanks to @dependabot[bot]
- 3184: Update adriansuter/php-autoload-override requirement from ^1.2 to ^1.3 thanks to @dependabot[bot]
- 3189: Update phpstan/phpstan requirement from ^1.5 to ^1.6 thanks to @dependabot[bot]
- 3191: Adding property types to Middleware classes thanks to @ashleycoles
- 3193: Handlers types thanks to @ashleycoles
- 3194: Adding types to AbstractErrorRenderer thanks to @ashleycoles
- 3195: Adding prop types for Exception classes thanks to @ashleycoles
- 3196: Adding property type declarations for Factory classes thanks to @ashleycoles
- 3197: Remove redundant docblock types thanks to @theodorejb
- 3199: Update laminas/laminas-diactoros requirement from ^2.9 to ^2.11 thanks to @dependabot[bot]
- 3200: Update phpstan/phpstan requirement from ^1.6 to ^1.7 thanks to @dependabot[bot]
- 3205: Update guzzlehttp/psr7 requirement from ^2.2 to ^2.4 thanks to @dependabot[bot]
- 3206: Update squizlabs/php_codesniffer requirement from ^3.6 to ^3.7 thanks to @dependabot[bot]
- 3207: Update phpstan/phpstan requirement from ^1.7 to ^1.8 thanks to @dependabot[bot]
- 3211: Assign null coalescing to coalesce equal thanks to @MathiasReker
- 3213: Void return thanks to @MathiasReker
- 3214: Is null thanks to @MathiasReker
- 3216: Refactor thanks to @mehdihasanpour
- 3218: Refactor some code thanks to @mehdihasanpour
- 3221: Cleanup thanks to @mehdihasanpour
- 3225: Update laminas/laminas-diactoros requirement from ^2.11 to ^2.14 thanks to @dependabot[bot]
- 3228: Using assertSame to let assert equal be restricted thanks to @peter279k
- 3229: Update laminas/laminas-diactoros requirement from ^2.14 to ^2.17 thanks to @dependabot[bot]
- 3235: Persist routes indexed by name in RouteCollector for improved performance. thanks to @BusterNeece
- 3120: Add a new PSR-17 factory to Psr17FactoryProvider thanks to @solventt
- 3123: Replace deprecated setMethods() in tests thanks to @solventt
- 3126: Update guzzlehttp/psr7 requirement from ^2.0 to ^2.1 thanks to @dependabot[bot]
- 3127: PHPStan v1.0 thanks to @t0mmy742
- 3128: Update phpstan/phpstan requirement from ^1.0 to ^1.2 thanks to @dependabot[bot]
- 3129: Deprecate PHP 7.3 thanks to @l0gicgate
- 3130: Removed double defined PHP 7.4 thanks to @flangofas
- 3132: Add new
RequestResponseNamedArgs
route strategy thanks to @adoy - 3133: Improve typehinting for
RouteParserInterface
thanks to @jerowork - 3135: Update phpstan/phpstan requirement from ^1.2 to ^1.3 thanks to @dependabot[bot]
- 3137: Update phpspec/prophecy requirement from ^1.14 to ^1.15 thanks to @dependabot[bot]
- 3138: Update license year thanks to @Awilum
- 3139: Fixed #1730 (reintroduced in 4.x) thanks to @adoy
- 3145: Update phpstan/phpstan requirement from ^1.3 to ^1.4 thanks to @dependabot[bot]
- 3146: Inherit HttpException from RuntimeException thanks to @nbayramberdiyev
- 3148: Upgrade to HTML5 thanks to @nbayramberdiyev
- 3172: Update nyholm/psr7 requirement from ^1.4 to ^1.5 thanks to @dependabot[bot]
- 3058: Implement exception class for Gone Http error thanks to @TheKernelPanic
- 3086: Update slim/psr7 requirement from ^1.3 to ^1.4 thanks to @dependabot[bot]
- 3087: Update nyholm/psr7-server requirement from ^1.0.1 to ^1.0.2 thanks to @dependabot[bot]
- 3093: Update phpstan/phpstan requirement from ^0.12.85 to ^0.12.90 thanks to @dependabot[bot]
- 3099: Allow updated psr log thanks to @t0mmy742
- 3104: Drop php7.2 thanks to @t0mmy742
- 3106: Use PSR-17 factory from Guzzle/psr7 2.0 thanks to @t0mmy742
- 3108: Update README file thanks to @t0mmy742
- 3112: Update laminas/laminas-diactoros requirement from ^2.6 to ^2.8 thanks to @dependabot[bot]
- 3114: Update slim/psr7 requirement from ^1.4 to ^1.5 thanks to @dependabot[bot]
- 3115: Update phpstan/phpstan requirement from ^0.12.96 to ^0.12.99 thanks to @dependabot[bot]
- 3116: Remove Zend Diactoros references thanks to @l0gicgate
- 3034: Fix phpunit dependency version thanks to @l0gicgate
- 3037: Replace Travis by GitHub Actions thanks to @t0mmy742
- 3043: Cover App creation from AppFactory with empty Container thanks to @t0mmy742
- 3045: Update phpstan/phpstan requirement from ^0.12.58 to ^0.12.64 thanks to @dependabot-preview[bot]
- 3047: documentation: min php 7.2 required thanks to @Rotzbua
- 3054: Update phpstan/phpstan requirement from ^0.12.64 to ^0.12.70 thanks to @dependabot-preview[bot]
- 3056: Fix docblock in ErrorMiddleware thanks to @piotr-cz
- 3060: Update phpstan/phpstan requirement from ^0.12.70 to ^0.12.80 thanks to @dependabot-preview[bot]
- 3061: Update nyholm/psr7 requirement from ^1.3 to ^1.4 thanks to @dependabot-preview[bot]
- 3063: Allow ^1.0 || ^2.0 in psr/container thanks to @Ayesh
- 3069: Classname/Method Callable Arrays thanks to @ddrv
- 3078: Update squizlabs/php_codesniffer requirement from ^3.5 to ^3.6 thanks to @dependabot[bot]
- 3079: Update phpspec/prophecy requirement from ^1.12 to ^1.13 thanks to @dependabot[bot]
- 3080: Update guzzlehttp/psr7 requirement from ^1.7 to ^1.8 thanks to @dependabot[bot]
- 3082: Update phpstan/phpstan requirement from ^0.12.80 to ^0.12.85 thanks to @dependabot[bot]
- 3027: Fix: FastRoute dispatcher and data generator should match thanks to @edudobay
- 3015: PHP 8 support thanks to @edudobay
- 3024: Randomize tests thanks to @pawel-slowik
- 2942: Fix PHPdoc for error handlers in ErrorMiddleware thanks to @TiMESPLiNTER
- 2944: Remove unused function in ErrorHandler thanks to @l0gicgate
- 2960: Fix phpstan 0.12 errors thanks to @adriansuter
- 2982: Removing cloning statements in tests thanks to @l0gicgate
- 3017: Fix request creator factory test thanks to @pawel-slowik
- 3022: Ensure RouteParser Always Present After Routing thanks to @l0gicgate
- 2949: Add the support in composer.json thanks to @ddrv
- 2958: Strict empty string content type checking in BodyParsingMiddleware::getMediaType thanks to @Ayesh
- 2997: Add hints to methods thanks to @evgsavosin - 3000: Fix route controller test thanks to @pawel-slowik
- 3001: Add missing
$strategy
parameter in a Route test thanks to @pawel-slowik
- 2951: Minor optimizations in if() blocks thanks to @Ayesh
- 2959: Micro optimization: Declare closures in BodyParsingMiddleware as static thanks to @Ayesh
- 2978: Split the routing results to its own function. thanks to @dlundgren
- 2953: Update nyholm/psr7-server requirement from ^0.4.1 thanks to @dependabot-preview[bot]
- 2954: Update laminas/laminas-diactoros requirement from ^2.1 to ^2.3 thanks to @dependabot-preview[bot]
- 2955: Update guzzlehttp/psr7 requirement from ^1.5 to ^1.6 thanks to @dependabot-preview[bot]
- 2956: Update slim/psr7 requirement from ^1.0 to ^1.1 thanks to @dependabot-preview[bot]
- 2957: Update nyholm/psr7 requirement from ^1.1 to ^1.2 thanks to @dependabot-preview[bot]
- 2963: Update phpstan/phpstan requirement from ^0.12.23 to ^0.12.25 thanks to @dependabot-preview[bot]
- 2965: Update adriansuter/php-autoload-override requirement from ^1.0 to ^1.1 thanks to @dependabot-preview[bot]
- 2967: Update nyholm/psr7 requirement from ^1.2 to ^1.3 thanks to @dependabot-preview[bot]
- 2969: Update nyholm/psr7-server requirement from ^0.4.1 to ^1.0.0 thanks to @dependabot-preview[bot]
- 2970: Update phpstan/phpstan requirement from ^0.12.25 to ^0.12.26 thanks to @dependabot-preview[bot]
- 2971: Update phpstan/phpstan requirement from ^0.12.26 to ^0.12.27 thanks to @dependabot-preview[bot]
- 2972: Update phpstan/phpstan requirement from ^0.12.27 to ^0.12.28 thanks to @dependabot-preview[bot]
- 2973: Update phpstan/phpstan requirement from ^0.12.28 to ^0.12.29 thanks to @dependabot-preview[bot]
- 2975: Update phpstan/phpstan requirement from ^0.12.29 to ^0.12.30 thanks to @dependabot-preview[bot]
- 2976: Update phpstan/phpstan requirement from ^0.12.30 to ^0.12.31 thanks to @dependabot-preview[bot]
- 2980: Update phpstan/phpstan requirement from ^0.12.31 to ^0.12.32 thanks to @dependabot-preview[bot]
- 2981: Update phpspec/prophecy requirement from ^1.10 to ^1.11 thanks to @dependabot-preview[bot]
- 2986: Update phpstan/phpstan requirement from ^0.12.32 to ^0.12.33 thanks to @dependabot-preview[bot]
- 2990: Update phpstan/phpstan requirement from ^0.12.33 to ^0.12.34 thanks to @dependabot-preview[bot]
- 2991: Update phpstan/phpstan requirement from ^0.12.34 to ^0.12.35 thanks to @dependabot-preview[bot]
- 2993: Update phpstan/phpstan requirement from ^0.12.35 to ^0.12.36 thanks to @dependabot-preview[bot]
- 2995: Update phpstan/phpstan requirement from ^0.12.36 to ^0.12.37 thanks to @dependabot-preview[bot]
- 3010: Update guzzlehttp/psr7 requirement from ^1.6 to ^1.7 thanks to @dependabot-preview[bot]
- 3011: Update phpspec/prophecy requirement from ^1.11 to ^1.12 thanks to @dependabot-preview[bot]
- 3012: Update slim/http requirement from ^1.0 to ^1.1 thanks to @dependabot-preview[bot]
- 3013: Update slim/psr7 requirement from ^1.1 to ^1.2 thanks to @dependabot-preview[bot]
- 3014: Update laminas/laminas-diactoros requirement from ^2.3 to ^2.4 thanks to @dependabot-preview[bot]
- 3018: Update phpstan/phpstan requirement from ^0.12.37 to ^0.12.54 thanks to @dependabot-preview[bot]
- 2916 Rename phpcs.xml to phpcs.xml.dist
- 2917 Update .editorconfig
- 2925 ResponseEmitter: Don't remove Content-Type and Content-Length when body is empt
- 2932 Update the Tidelift enterprise language
- 2938 Modify usage of deprecated expectExceptionMessageRegExp() method
- 2862 Optionally handle subclasses of exceptions in custom error handler
- 2869 php-di/php-di added in composer suggestion
- 2874 Add
null
to param type-hints - 2889 Make
RouteContext
attributes customizable and change default to use private names - 2907 Migrate to PSR-12 convention
- 2910 Migrate Zend to Laminas
- 2912 Add Laminas PSR17 Factory
- 2913 Update php-autoload-override version
- 2914 Added ability to add handled exceptions as an array
- 2864 Optimize error message in error handling if displayErrorDetails was not set
- 2876 Update links from http to https
- 2877 Fix docblock for
Slim\Routing\RouteCollector::cacheFile
- 2878 check body is writable only on ouput buffering append
- 2896 Render errors uniformly
- 2902 Fix prophecies
- 2908 Use autoload-dev for
Slim\Tests
namespace
- 2819 Added description to addRoutingMiddleware()
- 2820 Update link to homepage in composer.json
- 2828 Allow URIs with leading multi-slashes
- 2832 Refactor
FastRouteDispatcher
- 2835 Rename
pathFor
tourlFor
in docblock - 2846 Correcting the branch name as per issue-2843
- 2849 Create class alias for FastRoute\RouteCollector
- 2855 Add list of allowed methods to HttpMethodNotAllowedException
- 2860 Add base path to
$request
and useRouteContext
to read
- 2839 Fix description for handler signature in phpdocs
- 2844 Handle base path by routeCollector instead of RouteCollectorProxy
- 2845 Fix composer scripts
- 2851 Fix example of 'Hello World' app
- 2854 Fix undefined property in tests
- 2853 Remove unused classes
- 2787 Add an advanced callable resolver
- 2791 Add
inferPrivatePropertyTypeFromConstructor
to phpstan - 2793 Add ability to configure application via a container in
AppFactory
- 2798 Add PSR-7 Agnostic Body Parsing Middleware
- 2801 Add
setLogErrorRenderer()
method toErrorHandler
- 2807 Add check for Slim callable notation if no resolver given
- 2803 Add ability to emit non seekable streams in
ResponseEmitter
- 2817 Add the ability to pass in a custom
MiddlewareDispatcherInterface
to theApp
- 2789 Fix Cookie header detection in
ResponseEmitter
- 2796 Fix http message format
- 2800 Fix null comparisons more clear in
ErrorHandler
- 2802 Fix incorrect search of a header in stack
- 2806 Simplify
Route::prepare()
method argument preparation - 2809 Eliminate a duplicate code via HOF in
MiddlewareDispatcher
- 2816 Fix RouteCollectorProxy::redirect() bug
- 2811 Remove
DeferredCallable
- #2779 Add support for Slim callables
Class:method
resolution & Container Closure auto-binding inMiddlewareDispatcher
- #2774 Add possibility for custom
RequestHandler
invocation strategies
- #2776 Fix group middleware on multiple nested groups