1. Go to this page and download the library: Download kod/bootstrap-slim library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kod / bootstrap-slim example snippets
use MyProject\Bootstrap;
// application configuration
$config = ddlewares()
->run();
namespace MyProject;
use Kod\BootstrapSlim\Bootstrap as SlimBootstrap;
class Bootstrap extends SlimBootstrap
{
public function addAppRoutes()
{
return $this->addRouteDefinitions(
HomeRoutes::class,
HelpRoutes::class
);
}
public function addAppMiddleware()
{
return $this->addMiddleware(
ValidateResponse::class,
SecurityHeaders::class,
ValidateRequest::class
);
}
}
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Kod\BootstrapSlim\RouteDefinitions;
class HomesRoutes extends RouteDefinitions
{
public function __invoke($app)
{
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write('home page');
return $response;
});
}
}
namespace MyProject;
use Kod\BootstrapSlim\Bootstrap as SlimBootstrap;
use Slim\App;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use MyProject\Routes\HomesRoutes;
class Bootstrap extends SlimBootstrap
{
public function addAppRoutes()
{
return $this->addRouteDefinitions(
HomesRoutes::class,
function(App $app){
$app->get('/', function (Request $request, Response $response, $args) {
return $response;
});
}
);
}
}
use Kod\BootstrapSlim\Middleware;
use Psr\Http\{
Message\ResponseInterface,
Message\ServerRequestInterface,
};
use Psr\Http\Server\RequestHandlerInterface;
/**
* MiddlewareMock writes some content before and after content generation.
*/
class MyMiddleware extends Middleware
{
/**
* @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler
* @return ResponseInterface
*/
public function __invoke(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$container = $this->ci; // absolutely useless, just for the demo
$response = $handler->handle($request);
... // some treatment here
return $response;
}
}
namespace MyProject;
use Kod\BootstrapSlim\Bootstrap as SlimBootstrap;
use Psr\Http\{
Message\ResponseInterface,
Message\ServerRequestInterface,
};
use Psr\Http\Server\RequestHandlerInterface;
use MyProject\Middleware\MyMiddleware;
class Bootstrap extends SlimBootstrap
{
public function addAppMiddleware()
{
return $this->addMiddleware(
MyMiddleware::class,
function (ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface {
$container = $this; //bound by Slim\MiddlewareDispatcher
$response = $handler->handle($request);
... // some treatment here
return $response;
}
);
}
}
use Kod\BootstrapSlim\RouteDefinitions;
use Slim\Psr7\{Request, Response};
use Slim\Interfaces\RouteCollectorProxyInterface;
use MyProject\Middleware\MyMiddleware;
class BillingRoutes extends RouteDefinitions
{
/**
* @param App $app
*/
public function __invoke($app)
{
$app->group('/billing', function (RouteCollectorProxyInterface $group) {
$group->get('/', function (Request $request, $response, $args) {
// Route for /billing
... // some treatment
return $response;
});
$group->get('/invoice/{id:[0-9]+}', function (Request $request, Response $response, $args) {
// Route for /invoice/{id:[0-9]+}
... // some treatment
return $response;
});
})->add(MyMiddleware::class);
}
}
use MyProject\Bootstrap;
use MyProject\MyContainer;
// application configuration
$config = ->addAppMiddlewares()
->run();
use MyProject\{MyBootstrap, MyRoute};
use Kod\BootstrapSlim\Utils;
class MyRouteTest extends TestCase
{
// test configuration
public static $config = [ 'settings' => ['price' => 100] ];
public function testMyRouteWithoutAppMiddleware()
{
// Prepare environment for the request
Utils::setEnv([
'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => '/',
]);
// Process the request
$response = (new MyBootstrap(static::$config))
->addRouteDefinitions(MyRoute::class)
->run(true);
$content = (string)$response->getBody();
// MyRoute class is supposed to return the price from settings
$this->assertContains(100, $content);
}
public function testMyRouteWithAppMiddleware()
{
// Prepare environment for the request
Utils::setEnv([
'REQUEST_METHOD' => 'GET',
'REQUEST_URI' => '/',
]);
// Process the request
$response = (new MyBootstrap(static::$config))
->addAppMiddleware() // <- declare application middleware
->addRouteDefinitions(MyRoute::class)
->run(true);
$content = (string)$response->getBody();
// MyRoute class is supposed to return the price from settings
$this->assertContains(100, $content);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.