Slim Framework
- PHP microframework pro psaní webových aplikací a API
- https://www.slimframework.com
Slim Framework instalace
$ composer require slim/slim:^4.0
$ composer require slim/psr7Example
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
require __DIR__ . '/../vendor/autoload.php';
// Create Slim app
$app = AppFactory::create();
// Define app routes
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello world!");
return $response;
});
// Run app
$app->run();Spuštění
- Pomocí PHP built-in webserveru
$ php -S localhost:8080Response
- Nastavení status kódu (výchozí 201)
$response->withStatus(201);$data = ['name' => 'Bob', 'age' => 40];
$payload = json_encode($data);
$response->getBody()->write($payload);
return $response->withHeader('Content-Type', 'application/json');Request Headers
- https://www.slimframework.com/docs/v4/objects/request.html#the-request-headers
- Získání hlavičky/hlaviček v podobě pole
$headers = $request->getHeader('Content-Type');Request Body
- https://www.slimframework.com/docs/v4/objects/request.html#the-request-body
- Získání JSON dat v podobě PHP asociativního pole (nutné použít middleware)
$parsedBody = $request->getParsedBody();Middleware
<?php
$app = AppFactory::create();
$beforeMiddleware = function ($request, $handler) {
$response = $handler->handle($request);
$existingContent = (string) $response->getBody();
$response = new Response();
$response->getBody()->write('BEFORE' . $existingContent);
return $response;
};
$afterMiddleware = function ($request, $handler) {
$response = $handler->handle($request);
$response->getBody()->write('AFTER');
return $response;
};
$app->add($beforeMiddleware);
$app->add($afterMiddleware);
// ...
$app->run();Seskupení cest
$app->group('', function (RouteCollectorProxy $group) {
$group->get('/billing', function ($request, $response, $args) {
// Route for /billing
});
$group->get('/invoice/{id:[0-9]+}', function ($request, $response, $args) {
// Route for /invoice/{id:[0-9]+}
});
})->add(new GroupMiddleware());