Version 2.4.0
Class controllers
You may now use a controller class instance as a callback for your Slim app routes.
$app->get('/hello/:name', '\Greeting:sayHello');
In this example, when the app receives a request for "/hello/Josh", it will instantiate class \Greeting
and pass the value "Josh" into its sayHello
method.
Note that we separate the class name and the class method with a single ":" colon. This is a unique syntax used by Slim to implement this functionality. Do not confuse this with the "::" syntax used for static method calls.
Request parameter defaults
When fetching request data with the \Slim\Http\Request
object's get()
, post()
, put()
, patch()
, or delete()
methods, you can define the default value you want if the requested data is not available. For example:
$app->get('/books', function () use ($app) {
$value = $app->request->get('genre', 'fiction');
});
In this example, we expect the HTTP request to have a URL query parameter genre
. If this query parameter does not exist, we will use "fiction" as the default value.
View Template Data
You may now pass data into a view template with \Slim\View::display()
and \Slim\View::fetch()
.
// Fetch a rendered template into a variable
$renderedTemplate = $app->view->fetch('my-template.php', ['foo' => 'bar']);
// Echo a rendered template to the output buffer
$app->view->display('my-template.php', ['foo' => 'bar']);
Other Changes
- Remove mcrypt dependency
- Add PHP 5.5 to Travis CI tests
- Improve typehinting with popular PHP IDEs
- Ensure application view template directory is defined on view construction
- Add HTTP 418 status code to
\Slim\Http\Response