Upgrade Guide

最后更新于:2022-04-01 04:24:12

# Upgrade Guide If you are upgrading from version 2 to version 3, these are the significant changes that you need to be aware of. # Removal of Stop/Halt Slim Core has removed Stop/Halt. In your applications, you should transition to using the withStatus() and withBody() Example In Slim 2.x: ~~~ $app->get('/', function () { $app->halt(400, 'Bad Request'); }); ~~~ And now in Slim 3.x: ~~~ $app->get('/', function ($req, $res, $args) { return $res->withStatus(400)->write('Bad Request'); }); ~~~ # Hooks Slim v3 no longer has the concept of hooks. Hooks were removed as they duplicate the functionality already present in middlewares. You should be able to easily convert your Hook code into Middleware code. # Removal HTTP Cache In Slim v3 we have removed the HTTP-Caching into its own module Slim\Http\Cache ( https://github.com/slimphp/Slim-HttpCache ) # Changed Redirect In Slim v2.x one would use the helper function $app->redirect(); to trigger a redirect request. In Slim v3.x one can do the same with using the Response class like so. Example: ~~~ $app->get('/', function ($req, $res, $args) { return $res->withStatus(301)->withHeader("Location", "yournewuri"); }); ~~~ # Middleware Signature —- The middleware signature has changed from a class to a function New signature: ~~~ $app->add(function ($req, $res, $next) {}); ~~~ ## Execution Application middleware is executed as Last In First Executed (LIFE) # Flash Messages In v3.0 the concept of flash messages has been removed. There currently is no planned feature for this, but could likely be a part of the Cookies package. # Cookies In v3.0 cookies has been removed from core and moved to a separate component. See (https://github.com/slimphp/Slim-Http-Cookies) # Removal of Crypto In v3.0 we have removed the dependency for crypto in core. # PHP Version Slim v3.0 requires PHP 5.5+ # Route Callbacks In v3.0 we have adopted a new callback signature: ~~~ $app->get('/', function ( \Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args = null) { //do stuff! }); ~~~ # New Router Slim now utilizes a new, more powerful router ( https://github.com/nikic/FastRoute )! # Route Middleware The syntax for adding route middleware has changed slightly. In v3.0: ~~~ php $app->get(…)->add($mw2)->add($mw1); ~~~ # urlFor() is now pathfor() in the router `urlFor()` has been renamed `pathFor()` and can be found in the `router` object: ~~~ $router = $app->router; $app->get('/', function ($request, $response, $args) use ($router) { $url = $router->pathFor('home'); $response->write("<a href='$url'>Home</a>"); return $response; })->setName('home'); ~~~ Also, `pathFor()` is base path aware.
';