Slim 3
https://github.com/slimphp/Slim
Total issues resolved: 5
- 2906: Fix #2890 thanks to @t0mmy742
- 3042: Allow "none" as SameSite value in cookies thanks to @arneee
- 3092: Don't use libxml_disable_entity_loader when deprecated thanks to @iansltx
- 3117: Add tests workflow to 3.x branch thanks to @l0gicgate
- 3186: Fix PHP 8.1 incompatibilities thanks to @barasimumatik
Total issues resolved: 2
- 2880: Remove phpdoc inheritdoc override thanks to @adriansuter
- 2885: Replace abandoned
container-interop/container-interop
package withpsr/container
thanks to @Ayesh
Total issues resolved: 8
- 2572: Add initial MAINTAINERS document thanks to @akrabat
- 2576: make sure HEAD requests do not return a body thanks to @lordrhodos
- 2586: Fix for #2568 thanks to @l0gicgate
- 2609: Fix incorrect return type hints on NotFound handler thanks to @rbairwell
- 2619: Update copyright year to 2019 thanks to @odan
- 2625: Remove references to unused EnvironmentInterface thanks to @jdrieghe
- 2629: Remove charset=utf-8 parameter from withJson() method thanks to @l0gicgate
- 2630: Remove
; charset=utf-8
from Response::withJson() thanks to @chadicus
Total issues resolved: 7
- 2505: Add PHPStan (config) and some fixes thanks to @tersmitten
- 2519: Added getBasePath method to Router thanks to @chantron
- 2520: Put HeaderStackTestAsset into Slim\Tests\Asset namespace thanks to @akrabat
- 2528: Update route group $callable parameter type thanks to @ugokoli
- 2532: Test with PHP 7.3 thanks to @tuupola
- 2543: Ensure PSR-7 stream read() is called with an int argument per spec thanks to @soren121
- 2558: Bug fix: Ensure integer is passed to read() thanks to @farpat
Total issues resolved: 15
- 2429: Added StatusCode class thanks to @Dmitry-Kucher
- 2431: Bug fix: Reset Route arguments for each call thanks to @mathmarques
- 2434: 308 is also a redirect code thanks to @sjinks
- 2439: Update docbock for Request::getParam() second param's type thanks to @hhovakimyan
- 2441: Bug fix: Replace header when sending first one of each header thanks to @akrabat
- 2447: array_merge was re-indexing arrays with numerical index thanks to @yolcuiskender
- 2448: Fix typo for testRenderHtmlExceptionOrErrorTypeChecksParameter thanks to @minchao
- 2449: Bug Fix: Make string comparison more strict in Slim\Http\Uri class thanks to @nyamsprod
- 2457: Upgrade .editorconfig thanks to @voyula
- 2463: Update composer.json thanks to @voyula
- 2466: Bug fix: Replace incorrect sprintf placeholders with default placeholders thanks to @llvdl
- 2471: Bug fix: Replace remaining incorrect sprintf placeholders thanks to @llvdl
- 2484: Allow chaining in Route::setOutputBuffering thanks to @piotr-cz
- 2485: Add tests for the return value of Route::setArgument and Route::setArguments methods thanks to @piotr-cz
- 2487: Bug Fix: Pick port defaults depending if the host was in HTTP_HOST or SERVER thanks to @lornajane
Total issues resolved: 8
- 2357: Fix minor issue in SmallChunksStream mock - Dev
- 2360: Fix example in README
- 2361: Use assertInternalType - Dev
- 2369: Test against PHP 7.2 - Dev
- 2388: Allow SameSite flag to be used in cookies
- 2397: Remove testing of hhvm - Dev
- 2411: Bug fix: Stop Slim overwriting Host header if it's defined
- 2426: Add a redirect() route shortcut, 3.x edition
Total issues resolved: 1
Total issues resolved: 8
- 2331: Update/add links to license (3.x)
- 2332: Fixed regression, removing user info with Uri::withUserInfo('') is not clearing password anymore
- 2337: Fix output buffering issue that was creating a risky test in PHPUnit.
- 2342: Regex simplification in CallableResolver
- 2345: Set status to 302 if Location header set
- 2351: Test for #2332
- 2353: Update CONTRIBUTING doc to drop reference to non-existent branch
- 2354: Fix nit typo
Total issues resolved: 20
- 2183: (dev) Fixed README badges on 3.x
- 2186: (dev) Fix travis for 3.x branch
- 2187: Allow all HTTP valid methods on 3.x
- 2213: ipv6 address without port generates warning
- 2216: determineAuthorization(): HTTP_AUTHORIZATION may be null or an empty string
- 2244: Adding plain not found response for OPTIONS requests
- 2250: Add
only
restriction to getParams() - 2257: Unused MethodNotAllowedException in Request Class
- 2270: Error handlers should respect
outputBuffering
setting - 2273: Add setOutputBuffering() to RouteInterface
- 2275: Added
setOutputBuffering()
toRouteInterface.php
- 2283: (dev) Fix typos in variable names
- 2286: Track only the stack tip in MiddlewareAwareTrait
- 2287: Make OPTIONS rendering clearer
- 2292: (dev) Fix typo in comment
- 2298: Support HTTP "2" as a valid protocol version (i.e no minor version)
- 2302: Pass $app to group() so invokable classes can be used
- 2309: Send correct status code regardless of location header
- 2323: Add 443 as SERVER_PORT(default) when request is https
- 2327: Encode user info
Total issues resolved: 1
Total issues resolved: 17
- 1946: Fix url mismatch when the base path contains a space
- 2066: Improve request parsing with invalid json
- 2110: Cleanup CallableResolver
- 2117: Addressing PHP 7.1 build issues
- 2119: Update docblocks for route arguments
- 2121: Support rendering Exceptions with previous Errors
- 2122: Handle invalid XML better
- 2126: Ensure Request::withUri preserves host correctly
- 2132: Added pragmatic example in code example into README.md
- 2134: As per PSR-7, type hint @return static
- 2136: updated consistent name request and response in MiddlewareAwareTrait
- 2137: updated missing phpdoc in Routable
- 2141: Call not-found/bad-method handlers on invalid HTTP method
- 2143: Fixed HTTP EOL
- 2146: Allowing use of PSR-11 containers
- 2150: Fix typo of getParams() phpdoc
- 2164: Update DocBlock
Total issues resolved: 8
Total issues resolved: 15
- 1954: Fix phpdoc for createRoute function in Router
- 1956: Add getServerParam method
- 1957: Fix getCookieParam() phpdoc error
- 1963: Related to #1962. Implementation with UnitTest
- 1975: Ensure withJson returns a new Response
- 1978: replaced deprecated getMock calls with getMockBuilder equivalents.
- 1984: Fix Issue #1983: Throwable exception uncaught in Route.php
- 1998: Update .gitattributes
- 2006: Remove unused property-reads
- 2007: Bug-fix for router
- 2011: Whitespace cleanup
- 2013: Update README with new support forum link
- 2014: Add more status codes
- 2017: Test with PHP 7.1 but allow failures
- 2034: Reuse getParsedBodyParam for determining method override in POST body.
A few useful bug fixes in this release including the ability to read the ‘Authorization’ header without tweaking .htaccess files or manually looking in getallheaders()!
We have also added getCookieParam() to the Request class. Also this release continues our efforts to improve the unit test coverage of the framework.
Total issues resolved: 17
- 1867: Fall back to getallheaders() when available
- 1872: gh-1838 added checks for pipe streams
- 1878: Added test for originalKey method in headers class
- 1879: Improved tests for Error handler
- 1882: Testing Router Methods
- 1883: Container converts not UnexpectedValueException but InvalidArgumentException
- 1884: Check if getReasonPhrase returns empty message
- 1885: Cookies tests improved
- 1889: Small fixes
- 1896: Env REQUEST_URI can contain query params.
- 1901: Move valid protocol versions to a class static var
- 1906: added a method to create Route instance
- 1907: Fix warning when failing to resolve callables of $class,$method format
- 1914: Add license docblock to DeferredCallable.php
- 1920: Added more tests for UploadedFiles
- 1925: Do not check streams with is_writable in UploadedFile::moveTo()
- 1929: Add getCookieParam method
3.4.1 had a BC break when handling errors where the acceptable media type listed in the Accept header wasn't the first one. This is now fixed.
Also, with this release, we set the App::VERSION
constant to the correct number.
Total issues resolved: 1
This releases fixes a infinite loop bug discovered in version 3.4.0 and also adds additional unit tests.
Total issues resolved: 5
Added
- 1749: Configurable FastRoute Caching
- 1781: Support structured suffix body parsers (+json/+xml)
- 1782: Support +json & +xml accept headers when creating error responses
- 1837: Add removeNamedRoute to Router and unit test
- 1844: #1669 added Routable::setPattern method
- 1848: Add
psr/http-message-implementation
to composer - 1856: Add option to remove content-length
Improved
- 1663: ContainerInterop compliance improvement
- 1830: Abstract handlers
- 1855: Update fast-route to stable version
Fixed
- 1846: #1836 count amount of bytes read instead of chunks
- 1859: Don't set http status code on withRedirect implicitly
- 1862: Do not clone response body while cloning response
The full list of changes is here
Added
- #1736 - Support the
hostOnly
cookie flag - #1764 - Write to the PHP error log if displayErrorDetails is false to make it easier to find out what's gone wrong!
- #1770 - Support PHP 7+ errors in the same way that Exceptions are handled.
Improved
- #1716 - Middleware is now only resolved when required.
- #1745 - Separate service registration from the container to make it easier to use your own Pimple container and then register the default Slim services.
Fixed
- #1733 & #1734 - Allow setting an empty array into the Request's query params and parsed body.
- #1737 - Do not explicitly set the HTTP status code in
withJson
. - #1738 - Named routes added after a call to
pathFor
can now be resolved in subsequent calls topathFor
. - #1739 - Responses with a body of indeterminate length can now have their content sent.
The full list of changes is here
This version makes a number of minor issues and improvements since the release of 3.0.0. The key changes are:
Added
- #1620 - Add
getParsedBodyParam()
andgetQueryParam()
toSlim\Http\Request
. - #1688 - Add
App::process()
to allow running a Slim application when you already have a request and response object. This allows a Slim application to be used within the middleware of another middleware pipeline. - #1697 - Add HTTP 451 status code to
Slim\Http\Response
.
Improved
- #1670 - Removed
final
fromSlim\Container
to allow extension. - #1684 -
withJson()
will now thrown an Exception if it fails to encode. - #1706 - Calling a non-existent method on
App
will now through an exception.
Fixed
- #1682 - Parse
REQUEST_URL
correctly inSlim\Http\Uri
. - #1698 -
Slim\Http\Request
now correctly determines the HTTP protocol version.
The full list of changes is here
This is the first stable release of Slim 3!
Changes since RC2
- #1643 - Revert detection of
Uri
's baseUrl so that routing of URLs of the form/foo/index.php/bar/baz
work again. - #1655 - Ensure that calling
$request->withMethod()
turns off detection of_METHOD
detection.
The full list of changes is here.
This release fixes a security issue, clears up some inconsistencies and fixes a number of bugs.
Security fix in 3.0.0-RC3:
- #1624 - XXE attacks are now prevented when parsing XML input.
BC breaks in 3.0.0-RC3:
These are the BC breaks since RC2:
- #1631 - The route callable is now bound to the Container rather than to the App to be consistent with middleware binding. This means that if you are using
$this->subRequest
then you now need touse ($app)
and then$app->subRequest(…)
. Also if you were using$this->getContainer()->get(…)
, you need to change this to$this->get(…)
. Note that using$this->foo
to retrieve a service from the container continues to work. - #1626 - Route paths are now simply concatentated with no magic. This may affect the way route groups were previously set up, but from now on, it's very predictable.
- #1625 - Group middleware is now executed before the route's middleware as you would expect. See issue #1622 for details.
The full list of changes is here.
BC breaks in 3.0.0-RC2:
- #1550 - The
MiddlewareTrait
'saddMiddleware()
method is now protected. Please use theadd()
method. - #1559 -
Request::getIp()
has been removed. Please use middleware such as rka-ip-address-middleware instead. - #1570 - Inspection of
X-Forwarded-Proto
andX-Forwarded-Host
headers inUri
have been removed. Please use middleware such as rka-scheme-and-host-detection-middleware instead.
New features in 3.0.0-RC2:
- #1509 - Slim 3's error handlers now only show exception information if you enable the
displayErrorDetails
setting. - #1552 - The router now has a new method called
internalPathFor()
for use withsubRequest()
. - We have adopted Glenn Eggleton's' PHP-View component for rendering using PHP view scripts.
The full list of changes is here
BC breaks in 3.0.0-RC1:
- #1489 -
getParsedBody()
will now return an array in all situations when JSON or form-urlencoded data is sent by the client. Previously, it returned an object when the content type was JSON. - #1457 - The Container can now be configured via an array passed into the
App
's constructor. Note that this means that your settings must now live in a sub-array called 'settings
'. - #1443 -
pathFor
now prepends the base path, making URLs easier to generate when you are running Slim within a subdirectory and removes the need to prepend withgetBaseUrl()
.
New features in 3.0.0-RC1:
- #1490 - Slim 3's error handlers now return JSON, XML or HTML as determined by the request's Accept header.
- #1488 - You can now disable Slim 3's error handler completely.
The full list of changes is here
Key changes since 3.0-beta1:
- #1425 - Slim 3 now requires PHP 5.5 or higher
- #1393, #1369 & #1354 - Various updates to our PSR-7 implementation, including a fix to allow the request body to be read more than once.
- #1345 - New
foundHandler
to change the signature of the route callable. By default the handler isRequestResponse
which creates callables with a signature offunction($request, $response, $args)
, but we also supply aRequestResponseArgs
handler with a callable signature offunction($request, $response, $routeParam1, $routeParam2)
. - #1343 - Ability to set default attributes on a route which can then be accessed within the route callable.
- #1362 - None of the factories in the container need to return a new instance to make it compatible with container-interop.
The full list of changes is here