Slim 3

https://github.com/slimphp/Slim

Total issues resolved: 5

Total issues resolved: 1

Total issues resolved: 1

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

Added

  • #1811 - Add Request::reparseBody() to provide a way to allow reparsing of the Request's body

Fixed

  • #1812 - Handle nested uploaded files correctly.
  • #1808 - Ensure that getParsedBody() returns null if the body cannot be parsed.

Fixed

  • #1799 - Make $file public in UploadedFile. Resolves issue #1798

Fixed

  • #1789 - Do not use DeferredCallable in route callable. This resolves issue #1785

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 to pathFor.
  • #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() and getQueryParam() to Slim\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 from Slim\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 in Slim\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 to use ($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:

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 with subRequest().
  • 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 with getBaseUrl().

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 is RequestResponse which creates callables with a signature of function($request, $response, $args), but we also supply a RequestResponseArgs handler with a callable signature of function($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